Transformers documentation
Mistral
이 모델은 2023-10-10에 HF papers에 게시되었으며, 2023-09-27에 Hugging Face Transformers에 기여되었습니다.
Mistral
Mistral은 7B 파라미터 언어 모델로, 사전 학습 및 지시 튜닝된 변형으로 제공되며, 대규모 모델의 확장 비용과 성능, 그리고 효율적인 추론 사이의 균형을 맞추는 데 초점을 맞추고 있습니다. 이 모델은 8K 컨텍스트 길이로 학습된 슬라이딩 윈도우 어텐션(SWA)과 고정된 캐시 크기를 사용하여 더 긴 시퀀스를 보다 효과적으로 처리합니다. 그룹 쿼리 어텐션(GQA)은 추론 속도를 높이고 메모리 요구량을 줄입니다. Mistral은 또한 바이트 폴백 BPE 토크나이저를 갖추고 있어, 문자가 어휘 밖(out-of-vocabulary) 토큰으로 매핑되는 일이 없도록 보장함으로써 토큰 처리와 효율성을 개선합니다.
모든 원본 Mistral 체크포인트는 Mistral AI_ 조직에서 찾을 수 있습니다.
Mistral을 다양한 언어 작업에 적용하는 방법에 대한 추가 예제는 오른쪽 사이드바의 Mistral 모델들을 클릭하여 확인하세요.
use_kernels=True를 from_pretrained()에 설정하여 Hub의 최적화 커널로 지원되는 레이어를 대체합니다. 자세한 내용은 커널 로딩을 참고하세요.
아래 예제는 Pipeline 또는 AutoModel을 사용하여 채팅하는 방법과 커맨드 라인에서 사용하는 방법을 보여줍니다.
from transformers import pipeline
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?"}
]
chatbot = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.3", device=0)
chatbot(messages)from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.3", attn_implementation="sdpa", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.3")
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: (...)"echo -e "My favorite condiment is" | transformers chat mistralai/Mistral-7B-v0.3 --dtype auto --device 0 --attn_implementation flash_attention_2Quantization은 가중치를 더 낮은 정밀도로 표현하여 대규모 모델의 메모리 부담을 줄입니다. 사용 가능한 다른 양자화 백엔드에 대해서는 Quantization 개요를 참조하세요.
아래 예제는 bitsandbytes를 사용하여 가중치만 4-bit로 양자화합니다.
import torch
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/Mistral-7B-Instruct-v0.3", quantization_config=quantization_config, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.3")
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"AttentionMaskVisualizer를 사용하여 모델이 어떤 토큰에 주의를 기울일 수 있고, 어떤 토큰에는 기울일 수 없는지 더 잘 이해해 보세요.
from transformers.utils.attention_visualizer import AttentionMaskVisualizer
visualizer = AttentionMaskVisualizer("mistralai/Mistral-7B-Instruct-v0.3")
visualizer("Do you have mayonnaise recipes?")
MistralConfig
클래스 transformers.MistralConfig
< 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-06use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonesliding_window: int | None = 4096attention_dropout: float | int = 0.0 )
매개변수
- 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-06) — 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매핑에 따라 가중치 임베딩을 묶을지 여부. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는rope_theta값이 포함되어야 하며, 더 긴max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다. - sliding_window (
int, 선택 사항, 기본값4096) — 슬라이딩 윈도우 어텐션의 윈도우 크기입니다.None인 경우 슬라이딩 윈도우가 적용되지 않습니다. - attention_dropout (
Union[float, int], 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다.
이것은 MistralModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인수를 기반으로 Mistral 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 mistralai/Mistral-7B-v0.1과 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
예:
>>> from transformers import MistralModel, MistralConfig
>>> # Initializing a Mistral 7B style configuration
>>> configuration = MistralConfig()
>>> # Initializing a model from the Mistral 7B style configuration
>>> model = MistralModel(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: dict[str, str | tokenizers.AddedToken | collections.abc.Sequence[str | tokenizers.AddedToken]]replace_extra_special_tokens: bool = True )
MistralCommonBackend는 설계상 add_special_tokens를 구현하지 않습니다.
이 동작이 구현되기를 원하신다면, Transformers 또는 mistral-common 저장소에서 이슈를 열어 요청해 주세요.
add_tokens
< source >( special_tokens_dict: dict[str, str | tokenizers.AddedToken | collections.abc.Sequence[str | tokenizers.AddedToken]]replace_extra_special_tokens: bool = True )
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: list[int]token_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: list[int]token_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: list[int]token_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: list[int]pair_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: list[int]pair_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이 반환됩니다.
전략에 따라 시퀀스 쌍을 인플레이스로 잘라냅니다.
MistralModel
class transformers.MistralModel
< source >( config: MistralConfig )
매개변수
- config (MistralConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 순수 Mistral Model입니다.
이 모델은 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'> ) → BaseModelOutputWithPast 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참조).
반환값
BaseModelOutputWithPast 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 BaseModelOutputWithPast (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(MistralConfig)과 입력에 따라 다양한 요소를 포함합니다.
MistralModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.past_key_values가 사용되면,(batch_size, 1, 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 가중치.
MistralForCausalLM
클래스 transformers.MistralForCausalLM
< source >( config: MistralConfig )
매개변수
- config (MistralConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
causal language modeling을 위한 Mistral Model입니다.
이 모델은 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 = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutputWithPast 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형태가(batch_size, sequence_length), 선택 사항) — causal language modeling loss를 계산하기 위한 라벨. 인덱스는[-100, 0, ..., config.vocab_size](참조input_ids문서 문자열). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, loss는 라벨이[0, ..., config.vocab_size].레이블은 내부적으로 시프트되어
labels[..., 1:]가logits[..., :-1, :]를 예측하는 데 사용됩니다.input_ids와 일치하는 시프트되지 않은 레이블을 전달하세요(즉,labels = input_ids). 전달하기 전에 레이블을 직접 시프트하지 마세요.레이블이 이미 시프트된 경우(예: 시퀀스 병렬성 사용 시),
shift_labels키워드 인수로 전달하면 그대로 사용됩니다. 손실이 계산되려면labels도 여전히 전달되어야 합니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조). - logits_to_keep (
Union[int, torch.Tensor], 선택 사항, 기본값0) —int인 경우, 마지막logits_to_keep토큰에 대한 logits를 계산합니다.0인 경우, 모든input_ids에 대한 logits를 계산합니다(특수한 경우). 생성에는 마지막 토큰의 logits만 필요하며, 해당 토큰에 대해서만 계산하면 메모리를 절약할 수 있습니다. 이는 긴 시퀀스나 큰 어휘 크기의 경우 상당한 이점을 제공합니다.torch.Tensor인 경우, 시퀀스 길이 차원에서 유지할 인덱스에 해당하는 1차원 텐서여야 합니다. 이는 패킹된 텐서 형식(배치와 시퀀스 길이를 단일 차원으로 사용하는 경우)을 사용할 때 유용합니다.
반환값
CausalLMOutputWithPast 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 CausalLMOutputWithPast입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(MistralConfig)과 입력에 따라 다양한 요소를 포함합니다.
MistralForCausalLM의 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 (
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, MistralForCausalLM
>>> model = MistralForCausalLM.from_pretrained("meta-mistral/Mistral-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-mistral/Mistral-2-7b-hf")
>>> 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."MistralForSequenceClassification
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인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
MistralForTokenClassification
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인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
MistralForQuestionAnswering
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인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.