Transformers documentation
Mixtral
이 모델은 2024-01-08에 HF papers에 게시되었으며, 2023-12-11에 Hugging Face Transformers에 기여되었습니다.
Mixtral
개요
Mixtral-8x7B는 Albert Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lélio Renard Lavaud, Lucile Saulnier, Marie-Anne Lachaux, Pierre Stock, Teven Le Scao, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed가 작성한 Mixtral of Experts 블로그 게시물에서 소개되었습니다.
블로그 포스트의 서론에는 다음과 같이 나와 있습니다:
오늘 팀은 오픈 웨이트를 갖춘 고품질 희소 전문가 혼합 모델(SMoE)인 Mixtral 8x7B을 출시하게 되어 자랑스럽습니다. Apache 2.0 라이선스로 제공되며, Mixtral은 대부분의 벤치마크에서 Llama 2 70B보다 뛰어난 성능을 보여주며 추론 속도는 6배 빠릅니다. 이는 관대 라이선스를 가진 오픈 웨이트 모델 중 가장 강력하며, 비용/성능 트레이드오프 측면에서도 전반적으로 가장 우수한 모델입니다. 특히, 대부분의 표준 벤치마크에서 GPT3.5와 동등하거나 더 나은 성능을 발휘합니다.
Mixtral-8x7B는 Mistral-7B에 이어 mistral.ai에서 출시한 두 번째 대규모 언어 모델(LLM)입니다.
아키텍처 세부 사항
Mixtral-8x7B는 다음과 같은 아키텍처 선택을 가진 decoder-only Transformer입니다:
- Mixtral is a Mixture of Experts (MoE) model with 8 experts per MLP, with a total of 45 billion parameters. To learn more about mixture-of-experts, refer to the blog post.
- 모델의 파라미터 수가 450억 개에 달하지만, 단일 forward pass에 필요한 연산량은 140억 파라미터 모델과 동일합니다. 각 expert를 RAM에 로드해야 하기 때문에(70B급 RAM 요구 사항) hidden states의 각 토큰은 두 번씩 라우팅(top 2 routing)되며, 따라서 연산량(각 forward computation에서 필요한 연산)은 단순히 2 X sequence_length가 됩니다.
다음 구현 세부 사항은 Mistral AI의 첫 번째 모델인 Mistral-7B와 공유됩니다:
- Sliding Window Attention - 8k 컨텍스트 길이와 고정된 캐시 크기로 학습되었으며, 이론적 주의 범위는 128K 토큰
- GQA(Grouped Query Attention) - 더 빠른 추론과 더 작은 캐시 크기를 허용합니다.
- Byte-fallback BPE tokenizer - ensures that characters are never mapped to out of vocabulary tokens.
자세한 내용은 릴리스 블로그 게시물을 참조하세요.
라이선스
Mixtral-8x7B는 Apache 2.0 라이선스 하에 공개됩니다.
사용 팁
Mistral 팀은 2개의 체크포인트를 출시했습니다:
- 인터넷 규모 데이터에서 다음 토큰을 예측하도록 사전 학습된 베이스 모델인 Mixtral-8x7B-v0.1
- 지시어 튜닝된 모델인 Mixtral-8x7B-Instruct-v0.1은 감독형 미세 조정(SFT)과 직접 선호 최적화(DPO)를 사용하여 채팅 용도로 최적화된 기본 모델입니다.
기본 모델은 다음과 같이 사용할 수 있습니다:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
prompt = "My favourite condiment is"
model_inputs = tokenizer([prompt], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"My favourite condiment is to ..."지시 튜닝된 모델은 다음과 같이 사용할 수 있습니다:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1")
messages = [
{"role": "user", "content": "What is your favourite condiment?"},
{"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
{"role": "user", "content": "Do you have mayonnaise recipes?"}
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
generated_ids = model.generate(model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"Mayonnaise can be made as follows: (...)"위에서 볼 수 있듯이, 지시 튜닝된 모델은 입력이 올바른 형식으로 준비되도록 chat template을 적용해야 합니다.
Flash Attention을 사용하여 Mixtral의 속도 향상
위의 코드 스니펫은 최적화 기법 없이 추론을 수행하는 방법을 보여줍니다. 그러나 모델 내부에서 사용되는 어텐션 메커니즘의 더 빠른 구현인 Flash Attention을 활용하면 모델의 속도를 크게 높일 수 있습니다.
Flash Attention 2의 최신 버전을 설치하여 슬라이딩 윈도우 어텐션 기능을 포함하도록 하십시오.
pip install -U flash-attn --no-build-isolation
Flash-Attention 2와 호환되는 하드웨어를 갖추고 있는지 또한 확인하세요. flash attention 저장소의 공식 문서에서 더 자세히 알아볼 수 있습니다. 또한 모델을 반정밀(예: torch.float16)로 로드하는지 확인하세요.
Flash Attention-2를 사용하여 모델을 로드하고 실행하려면 아래 스니펫을 참조하세요:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1", attn_implementation="flash_attention_2", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
prompt = "My favourite condiment is"
model_inputs = tokenizer([prompt], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"The expected output"기대되는 속도 향상
아래는 mistralai/Mixtral-8x7B-v0.1 체크포인트를 사용한 transformers의 네이티브 구현과 Flash Attention 2 버전 모델 간의 순수 추론 시간을 비교한 예상 속도 향상 다이어그램입니다.

슬라이딩 윈도우 Attention
현재 구현은 슬라이딩 윈도우 어텐션 메커니즘과 메모리 효율적인 캐시 관리를 지원합니다.
슬라이딩 윈도우 어텐션을 사용하려면, 슬라이딩 윈도우 어텐션과 호환되는 flash-attn 버전(>=2.3.0)을 사용하고 있는지 확인하십시오.
Flash Attention-2 모델은 더 메모리 효율적인 캐시 슬라이싱 메커니즘을 사용합니다. Mistral 모델의 공식 구현에서 권장하는 롤링 캐시 메커니즘을 따라 캐시 크기를 고정(self.config.sliding_window)하고, padding_side="left"인 경우에만 배치 생성을 지원하며, 현재 토큰의 절대 위치를 사용하여 위치 임베딩을 계산합니다.
양자화를 사용하여 Mixtral 축소
Mixtral 모델은 450억 개의 파라미터를 가지므로, 각 파라미터가 2바이트로 저장되는 반정밀도(float16) 기준 약 90GB의 GPU RAM이 필요합니다. 그러나 quantization을 사용하면 모델 크기를 줄일 수 있습니다. 모델을 4비트(파라미터당 반 바이트)로 양자화하면 약 27GB의 RAM만 필요하므로, 40GB RAM을 갖춘 단일 A100만으로 전체 모델을 수용할 수 있습니다.
모델을 양자화하는 방법은 모델에 quantization_config를 전달하는 것만으로 간단합니다. 아래에서는 bitsandbytes 양자화 라이브러리를 활용하지만, 다른 양자화 방법은 이 페이지를 참고하세요:
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
# specify how to quantize the model
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="torch.float16",
)
model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1", quantization_config=True, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1")
prompt = "My favourite condiment is"
messages = [
{"role": "user", "content": "What is your favourite condiment?"},
{"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
{"role": "user", "content": "Do you have mayonnaise recipes?"}
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
generated_ids = model.generate(model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"The expected output"이 모델은 Younes Belkada와 Arthur Zucker가 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.
리소스
Mixtral 시작을 돕기 위한 공식 Hugging Face 및 커뮤니티(🌎로 표시) 리소스 목록입니다. 여기에 리소스를 추가하고 싶으시면 Pull Request를 열어 주시면 검토하겠습니다! 기존 리소스와 중복되지 않고 새로운 것을 보여주는 것이 이상적입니다.
- Mixtral-8x7B의 supervised fine-tuning(SFT)을 수행하는 데모 노트북은 여기에서 확인할 수 있습니다. 🌎
- PEFT를 사용하여 Mixtral-8x7B를 파인튜닝하는 방법에 대한 블로그 포스트입니다. 🌎
- Hugging Face의 Alignment Handbook에는 Mistral-7B로 supervised fine-tuning(SFT)과 direct preference optimization을 수행하기 위한 스크립트와 레시피가 포함되어 있습니다. 여기에는 full fine-tuning, 단일 accelerator에서의 QLoRa, 그리고 multi-accelerator fine-tuning을 위한 스크립트가 모두 포함되어 있습니다.
- 인과적 언어 모델링 작업 가이드
MixtralConfig
클래스 transformers.MixtralConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32000hidden_size: int = 4096intermediate_size: int = 14336num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int = 8head_dim: int | None = Nonehidden_act: str = 'silu'max_position_embeddings: int = 131072initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = Falsesliding_window: int | None = Noneattention_dropout: float | int = 0.0num_experts_per_tok: int = 2num_local_experts: int = 8output_router_logits: bool = Falserouter_aux_loss_coef: float = 0.001router_jitter_noise: float = 0.0rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None )
매개변수
- vocab_size (
int, 선택 사항, 기본값32000) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - hidden_size (
int, 선택 사항, 기본값4096) — 숨겨진 표현의 차원입니다. - intermediate_size (
int, 선택 사항, 기본값14336) — MLP 표현의 차원입니다. - num_hidden_layers (
int, 선택 사항, 기본값32) — Transformer decoder의 숨겨진 레이어 수. - num_attention_heads (
int, 선택 사항, 기본값32) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - num_key_value_heads (
int, 선택 사항, 기본값8) — Grouped Query Attention 구현에 사용할 key_value 헤드 수입니다.num_key_value_heads=num_attention_heads이면 모델은 Multi Head Attention(MHA)을 사용하고,num_key_value_heads=1이면 Multi Query Attention(MQA)을 사용하며, 그 외에는 GQA를 사용합니다. 멀티 헤드 체크포인트를 GQA 체크포인트로 변환할 때, 각 그룹의 key 및 value 헤드는 해당 그룹 내 모든 원래 헤드를 평균 풀링(meanpooling)하여 구성해야 합니다. 자세한 내용은 이 논문을 참고하세요. 지정하지 않으면num_attention_heads가 기본값으로 사용됩니다. - head_dim (
int, 선택 사항) — Attention head의 차원입니다. None인 경우 hidden_size // num_attention_heads 값이 기본값으로 사용됩니다. - hidden_act (
str, 선택 사항, 기본값silu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - max_position_embeddings (
int, 선택 사항, 기본값131072) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다. - rms_norm_eps (
float, 선택 사항, 기본값1e-05) — rms 정규화 레이어에서 사용되는 epsilon 값입니다. - use_cache (
bool, 선택 사항, 기본값True) — 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음).config.is_decoder=True인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다. - pad_token_id (
int, 선택 사항) — 어휘에서 패딩에 사용되는 토큰 ID입니다. - bos_token_id (
int, 선택 사항, 기본값1) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다. - eos_token_id (
Union[int, list[int]], 선택 사항, 기본값2) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다. - tie_word_embeddings (
bool, 선택, 기본값False) — 모델의tied_weights_keys매핑에 따라 가중치 임베딩을 묶을지 여부. - sliding_window (
int, 선택 사항) — 슬라이딩 윈도우 어텐션의 윈도우 크기입니다.None인 경우 슬라이딩 윈도우가 적용되지 않습니다. - attention_dropout (
Union[float, int], 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다. - num_experts_per_tok (
int, 선택 사항, 기본값2) — 각 토큰을 라우팅할 전문가의 수입니다. 이는 토큰 선택 라우팅의 top-k 값입니다. - num_local_experts (
int, 선택 사항, 기본값8) — 각 디바이스당 로컬 전문가의 수입니다.num_experts는num_local_experts로 나누어떨어져야 합니다. - output_router_logits (
bool, 선택 사항, 기본값False) — 모델이 router logits를 반환할지 여부입니다. 이 옵션을 활성화하면 load balancing loss와 router z-loss를 포함한 auxiliary loss도 출력할 수 있습니다. - router_aux_loss_coef (
float, 선택 사항, 기본값0.001) — 보조 로드 밸런싱 손실 계수입니다. MoE 모델에서 불균형한 전문가 라우팅을 처벌하는 데 사용됩니다. - router_jitter_noise (
float, 선택 사항, 기본값0.0) — 학습 중 로드 밸런싱을 개선하기 위해 라우터 로짓에 추가할 노이즈의 양. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는rope_theta값이 포함되어야 하며, 더 긴max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다.
이것은 MixtralModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Mixtral 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 mistralai/Mixtral-8x7B-v0.1과 유사한 구성이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
예:
>>> from transformers import MixtralModel, MixtralConfig
>>> # Initializing a Mixtral 7B style configuration
>>> configuration = MixtralConfig()
>>> # Initializing a model from the Mixtral 7B style configuration
>>> model = MixtralModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMistralCommonBackend
클래스 transformers.MistralCommonBackend
< source >( tokenizer_path: str | os.PathLike | pathlib.Pathmode: str | ValidationMode = 'test'model_max_length: int = 1000000000000000019884624838656padding_side: str = 'left'truncation_side: str = 'right'model_input_names: list[str] | None = Noneclean_up_tokenization_spaces: bool = False**kwargs )
mistral-common 토크나이저를 래핑하는 클래스입니다.
mistral-common은 Mistral AI 모델의 공식 토크나이저 라이브러리입니다. 사용하려면 다음으로 설치해야 합니다:
pip install transformers[mistral-common]
그렇지 않으면 토크나이저는 Transformers의 토크나이저 구현으로 폴백됩니다.
mistral-common에 대한 자세한 내용은 mistral-common을 참조하세요.
이 클래스는 mistral_common.tokens.tokenizers.mistral.MistralTokenizer를 감싸는 래퍼입니다.
공식 mistral-common 토크나이저를 사용하여 토크나이징하는 Hugging Face 호환 인터페이스를 제공하며, PreTrainedTokenizerBase 클래스를 상속합니다.
PythonBackend 클래스와의 주요 동작 차이점은 다음과 같습니다:
- 시퀀스 쌍은 지원되지 않습니다. 호환성을 위해 시그니처는 유지되었지만, 시퀀스 쌍과 관련된 모든 인수는 무시됩니다. 쌍에 대한 반환 값은
None으로 반환됩니다. is_split_into_words인자는 지원되지 않습니다.- 토크나이저에 새로운 토큰을 추가할 수 없습니다.
mistral-common에서는 특수 토큰이 Transformers와 다르게 처리됩니다.mistral-common에서 특수 토큰은 절대 직접 인코딩되지 않습니다. 즉,tokenizer.encode("<s>")은<s>토큰의 ID를 반환하지 않습니다. 대신, 문자열"<s>"의 토크나이제이션에 해당하는 ID 목록을 반환합니다. 자세한 내용은 mistral-common 문서를 참조하세요.
이 클래스를 개선할 제안이 있으시면, 토크나이저와 관련된 경우 mistral-common GitHub 저장소에, Hugging Face 인터페이스와 관련된 경우 Transformers GitHub 저장소에 이슈를 열어 주세요.
add_special_tokens
< source >( special_tokens_dict: dictreplace_extra_special_tokens: bool = True )
MistralCommonBackend는 설계상 add_special_tokens를 구현하지 않습니다.
이 동작이 구현되기를 원하신다면, Transformers 또는 mistral-common 저장소에서 이슈를 열어 요청해 주세요.
MistralCommonBackend는 설계상 add_special_tokens를 구현하지 않습니다.
이 동작이 구현되기를 원하신다면, Transformers 또는 mistral-common 저장소에서 이슈를 열어 요청해 주세요.
apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | collections.abc.Callable] | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool = Falsetokenize: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_dict: bool = Truereasoning_effort: ReasoningEffort | None = None**kwargs ) → Union[str, list[int], list[str], list[list[int]], BatchEncoding]
매개변수
- conversation (Union[List[Dict[str, str]], List[List[Dict[str, str]]]]) — “role”와 “content” 키를 가진 딕셔너리의 목록으로, 지금까지의 채팅 히스토리를 나타냅니다.
- tools (
List[Union[Dict, Callable]], 선택) — 모델에서 접근할 수 있는 도구(호출 가능한 함수) 목록입니다. 템플릿이 함수 호출을 지원하지 않는 경우 이 인수는 효과가 없습니다. 각 도구는 도구의 이름, 설명 및 인자 유형을 지정하는 JSON Schema로 전달해야 합니다. 자세한 내용은 채팅 템플릿 가이드를 참고하세요. - add_generation_prompt (
bool, 선택) — 이 인수는MistralCommonBackend에 대해 아무 동작도 하지 않습니다. 그러나 API 일관성을 유지하기 위해continue_final_message와 동시에 사용할 수 없습니다. 대화가 어시스턴트 메시지로 끝나면 오류가 발생합니다. 이러한 경우 대신continue_final_message를 사용하세요. - continue_final_message (bool, 선택 사항) —
이 값이 설정되면, 채팅은 마지막 메시지가 EOS 토큰 없이 열린 형태로 포맷팅됩니다. 모델은 새 메시지를 시작하는 대신 이 메시지를 계속 작성합니다. 이를 통해 모델 응답의 일부를 미리 채울 수 있습니다.
add_generation_prompt와 동시에 사용할 수 없습니다. - tokenize (
bool, 기본값True) — 출력을 토큰화할지 여부입니다.False인 경우 출력이 문자열이 됩니다. - padding (
bool,str또는 PaddingStrategy, 선택 사항, 기본값은False) — 모델의 패딩 방향과 패딩 인덱스에 따라 반환된 시퀀스에 적용할 패딩 전략을 다음 중 선택합니다:True또는'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).'max_length':max_length인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.False또는'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
- truncation (
bool, 기본값False) — 최대 길이에서 시퀀스를 잘릴지 여부입니다. tokenize가False인 경우 효과가 없습니다. - max_length (
int, 선택 사항) — 패딩 또는 잘라내기(padding or truncation)에 사용할 최대 길이(토큰 단위). tokenize가False인 경우 효과가 없습니다. 지정하지 않으면 토크나이저의max_length속성이 기본값으로 사용됩니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. tokenize가False. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.
- return_dict (
bool, 기본값False) — 이름이 지정된 출력이 포함된 딕셔너리를 반환할지 여부입니다. tokenize가False인 경우 효과가 없습니다. 최소 하나의 대화에 이미지가 포함된 경우, 해당 이미지의 픽셀 값은pixel_values키에, 이미지 크기는image_sizes키에 반환됩니다. - reasoning_effort (
ReasoningEffort, 선택 사항) — 해당 모델을 지원하는 경우, 채팅 완료에 사용할 추론 노력(reasoning effort)입니다. 가능한 값은 다음과 같습니다:ReasoningEffort.none: 모델이 추론하지 않습니다.ReasoningEffort.high: 모델이 추론 방식을 사용합니다. 지정하지 않으면 기본 추론 노력이 사용됩니다.
- kwargs (추가 키워드 인자, 선택 사항) —
mistral-common의
ChatCompletionRequest.from_openai메서드에 전달되는 추가 인자입니다.
반환값
Union[str, list[int], list[str], list[list[int]], BatchEncoding]
지금까지의 토큰화된 채팅, 제어 토큰 포함. 이 출력은 generate()와 같은 메서드를 통해 또는 직접 모델에 전달할 수 있는 상태입니다.
"role"와 "content" 키를 가진 사전 목록을 토큰 ID 목록으로 변환합니다.
batch_decode
< source >( sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
매개변수
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — 토큰화된 입력 ID 목록입니다.__call__메서드를 사용하여 얻을 수 있습니다. - skip_special_tokens (
bool, 선택 사항, 기본값False) — 디코딩 과정에서 특수 토큰을 제거할지 여부입니다. - clean_up_tokenization_spaces (
bool, 선택) — 토큰화 공백을 정리할지 여부입니다.None인 경우 기본값으로self.clean_up_tokenization_spaces를 사용합니다. - kwargs (추가 키워드 인자, 선택 사항) —
MistralCommonBackend.batch_decode에서 지원하지 않습니다. 사용할 경우 오류가 발생합니다.
반환값
list[str]
디코딩된 문장의 목록입니다.
decode를 호출하여 토큰 ID의 리스트로 된 리스트를 문자열의 리스트로 변환합니다.
이 메서드는 하위 호환성을 위해 제공됩니다. decode 메서드가 이제 배치 입력을 네이티브로 처리하므로, batch_decode 대신 decode를 직접 사용할 수 있습니다.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: None = None ) → list[int]
특수 토큰을 추가하여 시퀀스에서 모델 입력을 구성합니다.
이 메서드는 토크나이저의 mode에 따라 입력을 동적으로 구성합니다:
"test": seq0 [EOS]"finetuning": [BOS] seq0
convert_added_tokens
< source >( obj: tokenizers.AddedToken | typing.Anysave: bool = Falseadd_type_field: bool = True )
MistralCommonBackend는 설계상 convert_added_tokens를 구현하지 않습니다.
이 동작이 구현되기를 원하신다면, Transformers 또는 mistral-common 저장소에서 이슈를 열어 요청해 주세요.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: None = None ) → list[int]
special tokens가 추가된 토큰 ID에서 0으로 구성된 마스크를 생성합니다.
Transformers의 구현과 일치하도록 유지되었습니다.
decode
< source >( token_ids: typing.Union[int, list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → Union[str, list[str]]
매개변수
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — 토큰화된 입력 ID의 단일 시퀀스 또는 배치(시퀀스 목록)입니다.__call__메서드를 사용하여 얻을 수 있습니다. - skip_special_tokens (
bool, 선택 사항, 기본값False) — 디코딩 과정에서 특수 토큰을 제거할지 여부입니다. - clean_up_tokenization_spaces (
bool, 선택) — 토큰화 공백을 정리할지 여부입니다.None인 경우 기본값으로self.clean_up_tokenization_spaces를 사용합니다. - kwargs (추가 키워드 인자, 선택 사항) —
MistralCommonBackend.decode에서 지원하지 않습니다. 사용할 경우 오류가 발생합니다.
반환값
Union[str, list[str]]
단일 시퀀스에 대한 디코딩된 문자열, 또는 시퀀스 배치에 대한 디코딩된 문자열 목록.
토크나이저와 어휘를 사용하여 문자열의 id 시퀀스를 변환하며, 특수 토큰 제거 및 토큰화 공간 정리 옵션을 제공합니다.
encode
< source >( text: str | list[int]text_pair: None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Noneverbose: bool = Truereturn_offsets_mapping: typing.Literal[False] = Falsesplit_special_tokens: typing.Literal[False] = False**kwargs ) → list[int], torch.Tensor
매개변수
- text (
str또는list[int]) — 인코딩할 첫 번째 시퀀스입니다. 문자열 또는 정수 목록(토큰화된 문자열 ID)일 수 있습니다. - text_pair (
None, 선택 사항) —MistralCommonBackend.encode에서 지원되지 않습니다.PreTrainedTokenizerBase.encode의 시그니처와 일치하도록 유지됩니다. - add_special_tokens (
bool, 선택 사항, 기본값True) — 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이 설정은 입력 ID에 자동으로 추가되는 토큰을 정의하는 내부 함수인PretrainedTokenizerBase.build_inputs_with_special_tokens를 사용합니다.bos또는eos토큰을 자동으로 추가하고 싶을 때 유용합니다. Tokenizer가finetuning모드로 로드되면bos와eos를 모두 추가합니다. 그렇지 않고 “test” 모드인 경우bos만 추가합니다. - padding (
bool,str또는 PaddingStrategy, 선택 사항, 기본값은False) — 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다:True또는'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).'max_length':max_length인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.False또는'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
- truncation (
bool,str또는 TruncationStrategy, 선택 사항, 기본값은False) — 잘림(truncation)을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다:True또는'longest_first':max_length인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다.False또는'do_not_truncate'(기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
- max_length (
int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.설정하지 않거나
None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다. - stride (
int, 선택 사항, 기본값 0) —max_length와 함께 숫자로 설정하면,return_overflowing_tokens=True일 때 반환되는 오버플로 토큰에는 잘린 시퀀스의 끝부분에서 가져온 일부 토큰이 포함됩니다. 이를 통해 잘린 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 생깁니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다. - pad_to_multiple_of (
int, 선택 사항) — 설정하면 시퀀스를 제공된 값의 배수로 패딩합니다.padding이 활성화되어 있어야 합니다. 이는 Volta에서>= 7.5의 컴퓨트 기능을 가진 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다. - padding_side (
str, 선택 사항) — 모델에 패딩을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.
- **kwargs —
MistralCommonBackend.encode에서 지원하지 않습니다. 사용할 경우 오류가 발생합니다.
반환값
list[int], torch.Tensor
텍스트의 토큰화 된 id입니다.
토크나이저와 어휘를 사용하여 문자열을 id(정수)의 시퀀스로 변환합니다.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike*init_inputsmode: str | ValidationMode = 'test'cache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'model_max_length: int = 1000000000000000019884624838656padding_side: str = 'left'truncation_side: str = 'right'model_input_names: list[str] | None = Noneclean_up_tokenization_spaces: bool = False**kwargs )
매개변수
- pretrained_model_name_or_path (
str또는os.PathLike) — 다음 중 하나일 수 있습니다:- huggingface.co의 모델 저장소에 호스팅된 사전 정의된 토크나이저의 model id를 나타내는 문자열
- 토크나이저 설정이 포함된 디렉터리의 경로입니다. 예를 들어
MistralCommonBackend.tokenization_mistral_common.save_pretrained메서드를 사용하여 저장한 경우,./my_model_directory/와 같습니다.
- mode (
Union[str, ValidationMode], 선택 사항, 기본값은ValidationMode.test) — 의 검증 모드입니다. 가능한 값은 다음과 같습니다:MistralTokenizer"finetuning" 또는 ValidationMode.finetuning: Fine-tuning 모드. "test" 또는 ValidationMode.test: Test 모드. 토크나이저가 입력을 검증하고 모델에 요청을 준비하는 방식을 변경합니다."finetuning"또는ValidationMode.finetuning: fine-tuning 모드."test"또는ValidationMode.test: 테스트 모드입니다. 토크나이저가 입력을 검증하고 모델에 요청을 준비하는 방식을 변경합니다.
- cache_dir (
str또는os.PathLike, 선택 사항) — 표준 캐시를 사용하지 않을 경우, 다운로드된 사전 정의된 토크나이저 어휘 파일이 캐시될 디렉터리의 경로입니다. - force_download (
bool, 선택 사항, 기본값False) — 어휘 파일을 (재)다운로드를 강제하고, 캐시된 버전이 존재하는 경우 이를 무시할지 여부. - token (
str또는 bool, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다.True인 경우,hf auth login실행 시 생성된 토큰(~/.huggingface에 저장됨)을 사용합니다. - local_files_only (
bool, 선택 사항, 기본값False) — 로컬 파일에만 의존하고 파일을 다운로드하지 않으려면 True로 설정합니다. - revision (
str, 선택 사항, 기본값"main") — 사용할 특정 모델 버전입니다. huggingface.co에서 모델과 기타 아티팩트를 저장하기 위해 git 기반 시스템을 사용하므로,revision은 git에서 허용하는 모든 식별자, 즉 브랜치 이름, 태그 이름 또는 커밋 ID가 될 수 있습니다. - max_length (
int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.설정하지 않거나
None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다. - padding_side (
str, 선택 사항, 기본값"left") — 모델에 패딩을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다. - truncation_side (
str, 선택 사항, 기본값"right") — 모델에 잘림을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. - model_input_names (
List[str], 선택 사항) — 모델의 forward pass가 받는 입력 목록(예:"token_type_ids"또는"attention_mask"). 기본값은 동일한 이름의 클래스 속성에서 가져옵니다. - clean_up_tokenization_spaces (
bool, 선택, 기본값False) — 토큰화 과정에서 입력 텍스트를 분할할 때 추가된 공백을 모델이 정리할지 여부입니다. - kwargs (추가 키워드 인자, 선택 사항) —
MistralCommonBackend.from_pretrained에서 지원되지 않습니다. 사용할 경우 오류가 발생합니다.
사전 정의된 tokenizer에서 MistralCommonBackend를 인스턴스화합니다.
MistralCommonBackend는 mistral-common이 채팅 템플릿을 사용하지 않기 때문에 get_chat_template을 구현하지 않도록 설계되어 있습니다.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
특수 토큰이 추가되지 않은 토큰 목록에서 시퀀스 ID를 가져옵니다. 이 메서드는 토크나이저의 prepare_for_model 또는 encode_plus 메서드를 사용하여 특수 토큰을 추가할 때 호출됩니다.
토큰에서 인덱스로 매핑된 사전 형식으로 어휘를 반환합니다.
이것은 손실 변환입니다. 부분적인 UTF-8 바이트 시퀀스가 �으로 변환되기 때문에, 동일한 문자열로 디코딩되는 여러 토큰 ID가 있을 수 있습니다.
num_special_tokens_to_add
< source >( pair: typing.Literal[False] = False ) → int
특수 토큰을 사용하여 시퀀스를 인코딩할 때 추가된 토큰의 수를 반환합니다.
이것은 더미 입력을 인코딩하고 추가된 토큰의 수를 확인하므로 효율적이지 않습니다. 학습 루프 안에 이 코드를 배치하지 마세요.
prepare_for_model
< source >( ids: listpair_ids: None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = Falsereturn_offsets_mapping: typing.Literal[False] = Falsesplit_special_tokens: typing.Literal[False] = False**kwargs ) → BatchEncoding
매개변수
- ids (
list[int]) — 첫 번째 시퀀스의 토큰화된 입력 id입니다. - pair_ids (
None, 선택 사항) —MistralCommonBackend에서는 지원되지 않습니다.PreTrainedTokenizerBase의 인터페이스와 일치하도록 유지되었습니다. - add_special_tokens (
bool, 선택 사항, 기본값True) — 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이 설정은 입력 ID에 자동으로 추가되는 토큰을 정의하는 내부 함수인PretrainedTokenizerBase.build_inputs_with_special_tokens를 사용합니다.bos또는eos토큰을 자동으로 추가하고 싶을 때 유용합니다. Tokenizer가finetuning모드로 로드되면bos와eos를 모두 추가합니다. 그렇지 않고 “test” 모드인 경우bos만 추가합니다. - padding (
bool,str또는 PaddingStrategy, 선택 사항, 기본값은False) — 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다:True또는'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).'max_length':max_length인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.False또는'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
- truncation (
bool,str또는 TruncationStrategy, 선택 사항, 기본값은False) — 잘림(truncation)을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다:True또는'longest_first':max_length인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다.False또는'do_not_truncate'(기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
- max_length (
int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.설정하지 않거나
None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다. - stride (
int, 선택 사항, 기본값 0) —max_length와 함께 숫자로 설정하면,return_overflowing_tokens=True일 때 반환되는 오버플로 토큰에는 잘린 시퀀스의 끝부분에서 가져온 일부 토큰이 포함됩니다. 이를 통해 잘린 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 생깁니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다. - pad_to_multiple_of (
int, 선택 사항) — 설정하면 시퀀스를 제공된 값의 배수로 패딩합니다.padding이 활성화되어 있어야 합니다. 이는 Volta에서>= 7.5의 컴퓨트 기능을 가진 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다. - padding_side (
str, 선택 사항) — 모델에 패딩을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.
- return_token_type_ids (
bool, 선택 사항) — 토큰 타입 ID를 반환할지 여부.MistralCommonBackend의 경우, 단일 시퀀스만 지원되므로 시퀀스 길이의 0 리스트를 반환합니다. - return_attention_mask (
bool, 선택 사항) — attention mask를 반환할지 여부. 기본값으로 두면,return_outputs속성에 의해 정의된 해당 tokenizer의 기본값에 따라 attention mask를 반환합니다. - return_overflowing_tokens (
bool, 선택 사항, 기본값False) — 넘치는 토큰 시퀀스를 반환할지 여부입니다. 입력 ID의 시퀀스 쌍(또는 쌍의 배치)이truncation_strategy = longest_first또는True와 함께 제공되면, 넘치는 토큰을 반환하는 대신 오류가 발생합니다. - return_special_tokens_mask (
bool, 선택 사항, 기본값False) — 특수 토큰 마스크 정보를 반환할지 여부. - return_length (
bool, 선택 사항, 기본값False) — 인코딩된 입력의 길이를 반환할지 여부. - verbose (
bool, 선택 사항, 기본값True) — 추가 정보와 경고를 출력할지 여부. - return_offsets_mapping (
Literal[False], 선택) — Transformers의 시그니처와 일치하도록 유지되는 False입니다. - split_special_tokens (
Literal[False], 선택) — Transformers의 시그니처와 일치하도록 False로 유지됩니다. - **kwargs —
self.tokenize()메서드에 전달됩니다
반환값
다음 필드를 가진 BatchEncoding:
-
input_ids — 모델에 입력할 토큰 ID 목록.
-
attention_mask — 모델이 어떤 토큰에 주의를 기울여야 하는지 지정하는 인덱스 목록 (
return_attention_mask=True이거나self.model_input_names에 “attention_mask”가 포함된 경우). -
overflowing_tokens — 넘친 토큰 시퀀스 목록(
max_length이 지정되고return_overflowing_tokens=True인 경우). -
num_truncated_tokens — 잘림된 토큰의 개수(
max_length가 지정되고return_overflowing_tokens=True인 경우). -
special_tokens_mask — 0과 1의 목록으로, 1은 추가된 특수 토큰을, 0은 일반 시퀀스 토큰을 나타냅니다(
add_special_tokens=True이고return_special_tokens_mask=True인 경우). -
length — 입력의 길이 (
return_length=True인 경우)
모델에서 사용할 수 있도록 입력 id 시퀀스를 준비합니다. 특수 토큰을 추가하고, 특수 토큰을 고려하여 시퀀스가 오버플로우되는 경우 이를 잘라내며, 오버플로우된 토큰에 대해 이동 창(사용자가 정의한 스트라이드)을 관리합니다.
save_chat_templates
< source >( save_directory: str | os.PathLiketokenizer_config: dictfilename_prefix: str | Nonesave_jinja_files: bool )
MistralCommonBackend는 mistral-common이 채팅 템플릿을 사용하지 않기 때문에, 설계상 save_chat_templates를 구현하지 않습니다.
save_pretrained
< source >( save_directory: str | os.PathLike | pathlib.Pathpush_to_hub: bool = Falsetoken: str | bool | None = Nonecommit_message: str | None = Nonerepo_id: str | None = Noneprivate: bool | None = Nonesave_format: str | None = None**kwargs ) → tuple[str, ...]
매개변수
- save_directory (
str | os.PathLike | Path) — 토크나이저를 저장할 디렉터리. - push_to_hub (
bool, 선택, 기본값False) — 저장 후 HF Hub에 푸시합니다. - token (
str또는bool, 선택) — Hub 인증에 사용할 토큰. - commit_message (
str, 선택) — push할 때 사용할 커밋 메시지입니다. - repo_id (
str, 선택 사항) — Hub 저장소 ID입니다. - private (
bool, 선택 사항) — 리포지토리가 비공개인지 여부. - save_format (
str, 선택) —"mistral"은 네이티브 tekken 형식으로 저장하고,"hf"는 HuggingFace 형식으로 저장합니다. None은 원래 형식을 유지합니다. - kwargs (
dict, 선택 사항) — 지원되지 않습니다. 오류가 발생합니다.
반환값
tuple[str, ...]
저장된 파일의 경로.
토크나이저의 전체 상태를 저장합니다.
save_format이 "mistral"인 경우(또는 tekken 토크나이저의 경우 None인 경우),
원본 토크나이저 파일(예: tekken.json)이 save_directory에 기록됩니다. save_format이 "hf"인 경우, HF 형식 파일
(tokenizer.json + tokenizer_config.json)이 대신 생성됩니다.
MistralCommonBackend는 설계상 save_vocabulary를 구현하지 않습니다.
mistral-common는 하나의 토크나이저 파일로 구성되기 때문입니다. 어휘를 저장하려면 save_pretrained 메서드를 사용하는 것을 권장합니다.
토큰화
< source >( text: strreturn_offsets_mapping: typing.Literal[False] = Falsesplit_special_tokens: typing.Literal[False] = False**kwargs ) → list[str]
매개변수
- text (
str) — 인코딩할 시퀀스. - return_offsets_mapping (
Literal[False], 선택) — Transformers의 시그니처와 일치하도록 유지되는 False입니다. - split_special_tokens (
Literal[False], 선택) — Transformers의 시그니처와 일치하도록 False로 유지됩니다. - **kwargs (추가 키워드 인자) —
MistralCommonBackend.tokenize에서 지원하지 않습니다. 사용할 경우 오류가 발생합니다.
반환값
list[str]
토큰 목록
토크나이저를 사용하여 문자열을 토큰 시퀀스로 변환합니다.
단어 기반 어휘의 경우 단위로, 서브워드 기반 어휘의 경우 서브단위로 분할합니다.
truncate_sequences
< source >( ids: listpair_ids: None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0**kwargs ) → Tuple[list[int], None, list[int]]
매개변수
- ids (
list[int]) — 토큰화된 입력 id입니다. 문자열에서tokenize와convert_tokens_to_ids메서드를 체이닝하여 얻을 수 있습니다. - pair_ids (
None, 선택 사항) —MistralCommonBackend에서 지원되지 않습니다.PreTrainedTokenizerBase.truncate_sequences의 시그니처와 일치하도록 유지되었습니다. - num_tokens_to_remove (
int, 선택 사항, 기본값 0) — truncation 전략을 사용하여 제거할 토큰 수. - truncation_strategy (
str또는 TruncationStrategy, 선택 사항, 기본값은'longest_first') — 잘라내기(truncation)에 사용할 전략입니다. 다음 값 중 하나를 사용할 수 있습니다:'longest_first':max_length인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다.'do_not_truncate'(기본값): 잘라내지 않음(즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치로 출력할 수 있음).
- stride (
int, 선택 사항, 기본값 0) — 양수로 설정하면, 반환되는 오버플로 토큰에 반환되는 메인 시퀀스의 일부 토큰이 포함됩니다. 이 인수의 값은 추가 토큰의 수를 정의합니다.
반환값
Tuple[list[int], None, list[int]]
잘린 ids와 넘친 토큰 목록입니다. Transformers의 시그니처와 일치하도록 None이 반환됩니다.
전략에 따라 시퀀스 쌍을 인플레이스로 잘라냅니다.
MixtralModel
클래스 transformers.MixtralModel
< source >( config: MixtralConfig )
매개변수
- config (MixtralConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 상태의 Mixtral 모델이 원시 hidden-states를 출력하는 형태입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast 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
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - 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인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
MoeModelOutputWithPast 또는 tuple(torch.Tensor)
MoeModelOutputWithPast 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(MixtralConfig)과 입력에 따라 다양한 요소를 포함합니다.
MixtralModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.past_key_values (
Cache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — Cache 인스턴스입니다. 자세한 내용은 kv cache 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value, 그리고
config.is_encoder_decoder=True인 경우 크로스 어텐션 블록의 key와 value)를 포함합니다(입력past_key_values참조).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와 선택적 초기 임베딩 출력을 포함합니다.
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 가중치.
router_logits (
tuple(torch.Tensor), 선택 사항,output_router_probs=True와config.add_router_probs=True가 전달되었거나config.output_router_probs=True인 경우 반환됨) — 각 레이어마다 하나씩, 모양이(batch_size, sequence_length, num_experts)인torch.Tensor의 튜플.MoE 라우터가 계산하는 softmax 적용 후의 원시 라우터 로짓(raw router logits)입니다. 이 값들은 Mixture of Experts 모델의 보조 손실(auxiliary loss)을 계산하는 데 사용됩니다.
MixtralForCausalLM
클래스 transformers.MixtralForCausalLM
< source >( config: MixtralConfig )
매개변수
- config (MixtralConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
causal language modeling을 위한 Mixtral 모델.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_router_logits: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast 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
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - 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인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - 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참조). - output_router_logits (
bool, 선택) — 모든 라우터의 logits를 반환할지 여부입니다. 라우터 손실을 계산하는 데 유용하며, 추론 단계에서는 반환하지 않아야 합니다. - logits_to_keep (
Union[int, torch.Tensor], 선택 사항, 기본값0) —int인 경우, 마지막logits_to_keep토큰에 대한 logits를 계산합니다.0인 경우, 모든input_ids에 대한 logits를 계산합니다(특수한 경우). 생성에는 마지막 토큰의 logits만 필요하며, 해당 토큰에 대해서만 계산하면 메모리를 절약할 수 있습니다. 이는 긴 시퀀스나 큰 어휘 크기의 경우 상당한 이점을 제공합니다.torch.Tensor인 경우, 시퀀스 길이 차원에서 유지할 인덱스에 해당하는 1차원 텐서여야 합니다. 이는 패킹된 텐서 형식(배치와 시퀀스 길이를 단일 차원으로 사용하는 경우)을 사용할 때 유용합니다.
반환값
MoeCausalLMOutputWithPast 또는 tuple(torch.Tensor)
MoeCausalLMOutputWithPast 또는 torch.Tensor의 튜플(return_dict=False를 전달하거나 config.return_dict=False인 경우)로, 구성(MixtralConfig)과 입력에 따라 다양한 요소를 포함합니다.
MixtralForCausalLM의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 언어 모델링 손실(다음 토큰 예측용).logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).aux_loss (
torch.Tensor, 선택 사항,output_router_logits=True가 전달되거나config.output_router_logits=True인 경우, 그리고 모델이 로드 밸런싱 손실로 라우터를 학습하는 경우 반환됨) — 희소 모듈에 대한 로드 밸런싱 보조 손실입니다. 대신 라우터 바이어스로 전문가를 균형 맞추는 모델(DeepSeek-V3 및 이를 기반으로 파생된 아키텍처)은router_logits를 반환하되 여기서는None을 반환합니다.router_logits (
tuple(torch.Tensor), 선택 사항,output_router_logits=True가 전달되거나config.output_router_logits=True인 경우 반환됨) —torch.Tensor의 튜플(스파스 레이어마다 하나)로, 형태는(batch_size * sequence_length, num_experts)입니다.MoE 라우터가 계산한 원시 라우터 로짓입니다. 로드 밸런싱 손실을 계산하거나 토큰이 전문가로 어떻게 분배되는지 확인하는 데 사용할 수 있습니다.
past_key_values (
Cache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — Cache 인스턴스입니다. 자세한 내용은 kv cache 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)를 포함합니다(입력
past_key_values참조).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와 선택적 초기 임베딩 출력을 포함합니다.
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 AutoTokenizer, MixtralForCausalLM
>>> model = MixtralForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
>>> tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."MixtralForSequenceClassification
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.Tensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → SequenceClassifierOutputWithPast
매개변수
- 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
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - past_key_values (
Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 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인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다.config.num_labels == 1인 경우 회귀 손실(Mean-Square loss)이 계산되고,config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
SequenceClassifierOutputWithPast
GenericForSequenceClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
MixtralForTokenClassification
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.Tensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput
매개변수
- 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
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - past_key_values (
Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 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인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 토큰 분류 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
TokenClassifierOutput
GenericForTokenClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
MixtralForQuestionAnswering
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.Tensor | None = Nonestart_positions: torch.LongTensor | None = Noneend_positions: torch.LongTensor | None = None**kwargs: Unpack[TransformersKwargs] ) → QuestionAnsweringModelOutput
매개변수
- 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
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - past_key_values (
Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 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인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - start_positions (
torch.LongTensor, shape(batch_size,), 선택 사항) — 토큰 분류 손실을 계산하기 위해 라벨이 지정된 스팬의 시작 위치(인덱스)에 대한 라벨입니다. 위치는 시퀀스 길이(sequence_length)로 클램프됩니다. 시퀀스 범위를 벗어난 위치는 손실 계산에 반영되지 않습니다. - end_positions (
torch.LongTensor, shape(batch_size,), 선택 사항) — 토큰 분류 손실을 계산하기 위해 라벨이 지정된 스팬의 끝 위치(인덱스)에 대한 라벨입니다. 위치는 시퀀스 길이(sequence_length)로 클램프됩니다. 시퀀스 범위를 벗어난 위치는 손실 계산에 반영되지 않습니다.
반환값
QuestionAnsweringModelOutput
GenericForQuestionAnswering의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.