Transformers documentation
GLM-4.5, GLM-4.6, GLM-4.7
이 모델은 2025-08-08에 HF papers에 게시되었으며, 2025-07-21에 Hugging Face Transformers에 기여되었습니다.
GLM-4.5, GLM-4.6, GLM-4.7
개요
GLM-4.7, GLM-4.6, GLM-4.5 언어 모델은 이 클래스를 사용합니다. Transformers의 구현에는 MTP 레이어가 포함되어 있지 않습니다.
GLM-4.7
GLM-4.7, 새로운 코딩 파트너가 다음과 같은 기능과 함께 찾아옵니다:
- 코어 코딩: GLM-4.7은 전작인 GLM-4.6과 비교하여 다국어 에이전틱 코딩 및 터미널 기반 작업에서 뚜렷한 성능 향상을 보여주며, SWE-bench에서 (73.8%, +5.8%), SWE-bench Multilingual에서 (66.7%, +12.9%), Terminal Bench 2.0에서 (41%, +16.5%)의 점수를 기록했습니다. 또한 GLM-4.7은 행동 전 사고(thinking before acting)를 지원하여 Claude Code, Kilo Code, Cline, Roo Code와 같은 주요 에이전트 프레임워크에서 복잡한 작업의 성능이 크게 향상되었습니다.
- Vibe Coding: GLM-4.7은 UI 품질 개선에 있어 큰 진전을 이루었습니다. 더 깔끔하고 현대적인 웹페이지를 생성하며, 레이아웃과 크기가 더 정확한, 보기 좋은 슬라이드를 만들어냅니다.
- 도구 사용: GLM-4.7은 도구 사용에서 상당한 개선을 이루었습니다. τ^2-Bench와 같은 벤치마크 및 BrowseComp를 통한 웹 브라우징에서 눈에 띄게 향상된 성능을 확인할 수 있습니다.
- 복합 추론: GLM-4.7은 GLM-4.6 대비 HLE(Humanity’s Last Exam) 벤치마크에서 (42.8%, +12.4%)를 기록하며 수학 및 추론 능력을 크게 향상시켰습니다.
더 일반적으로, 채팅, 창작 글쓰기, 역할극 시나리오 등 다양한 다른 시나리오에서도 상당한 성능 향상을 확인할 수 있습니다.

교차 사고 및 보존된 사고

GLM-4.7은 Interleaved Thinking(GLM-4.5부터 도입된 기능)을 한층 더 강화하고, Preserved Thinking과 Turn-level Thinking를 도입했습니다. 동작 사이에 사고를 수행하고 턴 간 일관성을 유지함으로써 복잡한 작업을 더 안정적이고 제어하기 쉽게 만듭니다:
- Interleaved Thinking: 모델은 모든 응답 및 도구 호출 전에 추론을 수행하여 지시 사항 준수 및 생성 품질을 향상시킵니다.
- Preserved Thinking: 코딩 에이전트 시나리오에서 모델은 다중 턴 대화에 걸쳐 모든 thinking 블록을 자동으로 유지하며, 처음부터 다시 유도하는 대신 기존 추론을 재사용합니다. 이를 통해 정보 손실과 불일치를 줄일 수 있으며, 장기적이고 복잡한 작업에 적합합니다.
- 턴 단위 추론: 모델은 세션 내에서 턴별 추론 제어를 지원합니다. 경량 요청의 경우 추론을 비활성화하여 지연 시간과 비용을 줄이고, 복잡한 작업의 경우 정확도와 안정성을 높이기 위해 추론을 활성화할 수 있습니다.
자세한 내용: https://docs.z.ai/guides/capabilities/thinking-mode
더 많은 평가 결과, 사례 및 기술적 세부 사항은 GLM-4.7 기술 블로그를 방문하여 확인하세요.
GLM-4.6
GLM-4.5와 비교하면, GLM-4.6은 몇 가지 주요 개선 사항을 제공합니다:
- 더 긴 컨텍스트 윈도우: 컨텍스트 윈도우가 128K 토큰에서 200K 토큰으로 확장되어, 모델이 더 복잡한 에이전틱 작업을 처리할 수 있습니다.
- 뛰어난 코딩 성능: 해당 모델은 코드 벤치마크에서 더 높은 점수를 기록하며, Claude Code, Cline, Roo Code, Kilo Code와 같은 애플리케이션에서 시각적으로 완성도 높은 프론트엔드 페이지 생성을 포함한 실제 환경 성능이 향상되었습니다.
- 고급 추론: GLM-4.6은 추론 성능이 명확하게 향상되었으며 추론 중 도구 사용도 지원하여 전반적인 능력이 더욱 강화되었습니다.
- 더 강력한 에이전트: GLM-4.6은 도구 사용 및 검색 기반 에이전트에서 더 뛰어난 성능을 보이며, 에이전트 프레임워크 내에서 더 효과적으로 통합됩니다.
- 글쓰기 개선: 스타일과 가독성 측면에서 인간 선호도에 더 잘 부합하며, 역할극 시나리오에서 더 자연스럽게 동작합니다.
에이전트, 추론, 코딩을 다루는 8개의 공개 벤치마크에서 GLM-4.6을 평가했습니다. 결과에 따르면 GLM-4.6은 GLM-4.5 대비 명확한 성능 향상을 보였으며, DeepSeek-V3.1-Terminus와 Claude Sonnet 4와 같은 주요 국내외 모델에 대해서도 경쟁 우위를 유지했습니다.
더 많은 평가 결과, 사례 및 기술적 세부 사항은 GLM-4.6 기술 블로그를 방문하여 확인하세요.
GLM-4.5
GLM-4.5 시리즈 모델은 지능형 에이전트를 위해 설계된 파운데이션 모델이며, MoE 변형은 Glm4Moe로 문서화되어 있습니다.
GLM-4.5는 총 355억 개의 파라미터와 활성 32억 개의 파라미터를 갖추고 있으며, GLM-4.5-Air는 총 106억 개의 파라미터와 활성 12억 개의 파라미터를 가진 더 컴팩트한 설계를 채택했습니다. GLM-4.5 모델은 추론, 코딩, 지능형 에이전트 기능을 통합하여 지능형 에이전트 애플리케이션의 복잡한 요구 사항을 충족합니다.
GLM-4.5와 GLM-4.5-Air 모두 하이브리드 추론 모델로, 복잡한 추론과 도구 사용에 사용되는 thinking mode와 즉각적인 응답에 사용되는 non-thinking mode의 두 가지 모드를 제공합니다.
GLM-4.5와 GLM-4.5-Air 모두에 대해 베이스 모델, 하이브리드 추론 모델, 그리고 하이브리드 추론 모델의 FP8 버전을 오픈소스로 공개했습니다. 해당 모델들은 MIT 오픈소스 라이선스 하에 배포되며, 상업적 사용 및 2차 개발이 가능합니다.
12개의 산업 표준 벤치마크에 걸친 포괄적인 평가에서 입증된 바와 같이, GLM-4.5는 63.2라는 점수를 기록하며 모든 독점 및 오픈소스 모델 중 3위라는 뛰어난 성능을 달성했습니다. 특히, GLM-4.5-Air는 우수한 효율성을 유지하면서 59.8라는 경쟁력 있는 결과를 제공합니다.
더 많은 평가 결과, 사례 및 기술적 세부 사항은 기술 보고서 또는 기술 블로그를 참고하세요.
모델 코드, 도구 파서 및 추론 파서는 transformers, vLLM, SGLang의 구현에서 찾을 수 있습니다.
Glm4MoeConfig
class transformers.Glm4MoeConfig
< 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 = 151552hidden_size: int = 4096intermediate_size: int = 10944num_hidden_layers: int = 46num_attention_heads: int = 96num_key_value_heads: int = 8hidden_act: str = 'silu'max_position_embeddings: int = 131072initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool = Truetie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: float | int = 0.0moe_intermediate_size: int = 1408num_experts_per_tok: int = 8output_router_logits: bool = Falsen_shared_experts: int = 1n_routed_experts: int = 128routed_scaling_factor: float = 1.0n_group: int = 1topk_group: int = 1first_k_dense_replace: int = 1norm_topk_prob: bool = Trueuse_qk_norm: bool = Falsebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonepad_token_id: int | None = Nonenum_mtp_layers: int = 1 )
매개변수
- vocab_size (
int, 선택 사항, 기본값151552) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - hidden_size (
int, 선택 사항, 기본값4096) — 숨겨진 표현의 차원입니다. - intermediate_size (
int, 선택 사항, 기본값10944) — MLP 표현의 차원입니다. - num_hidden_layers (
int, 선택 사항, 기본값46) — Transformer decoder의 숨겨진 레이어 수입니다. - num_attention_heads (
int, 선택 사항, 기본값96) — 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가 기본값으로 사용됩니다. - 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 생성 모델인 경우에만 관련이 있습니다. - tie_word_embeddings (
bool, 선택, 기본값False) — 모델의tied_weights_keys매핑에 따라 가중치 임베딩을 묶을지 여부. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는rope_theta값이 포함되어야 하며, 더 긴max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다. - attention_bias (
bool, 선택 사항, 기본값False) — 자기 주의(self-attention) 시 query, key, value 및 출력 투영 계층에 bias를 사용할지 여부입니다. - attention_dropout (
Union[float, int], 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다. - moe_intermediate_size (
int, 선택 사항, 기본값1408) — 라우팅된 전문가 MLP의 중간 크기입니다. - num_experts_per_tok (
int, 선택 사항, 기본값8) — 각 토큰을 라우팅할 전문가의 수입니다. 이는 토큰 선택 라우팅의 top-k 값입니다. - output_router_logits (
bool, 선택 사항, 기본값False) — 모델이 router logits를 반환할지 여부입니다. 이 옵션을 활성화하면 load balancing loss와 router z-loss를 포함한 auxiliary loss도 출력할 수 있습니다. - n_shared_experts (
int, 선택 사항, 기본값1) — 공유 전문가의 수입니다. - n_routed_experts (
int, 선택 사항, 기본값128) — 라우팅된 전문가의 수입니다. - routed_scaling_factor (
float, 선택 사항, 기본값1.0) — 스케일링 팩터 또는 라우팅된 전문가. - n_group (
int, 선택 사항, 기본값 1) — 라우팅된 전문가의 그룹 수. - topk_group (
int, 선택 사항, 기본값1) — 토큰별로 선택할 그룹의 수입니다(각 토큰에 대해 선택된 전문가가topk_group개의 그룹 내에서만 선택되도록 보장합니다). - first_k_dense_replace (
int, 선택 사항, 기본값 1) — 얕은 레이어(embed->dense->dense->…->dense->moe->moe…->lm_head)에 포함된 dense 레이어의 수. --k dense layers—/ - norm_topk_prob (
bool, 선택 사항, 기본값True) — 라우팅된 전문가의 가중치를 정규화할지 여부입니다. - use_qk_norm (
bool, 선택 사항, 기본값False) — attention에서 query-key 정규화를 사용할지 여부입니다. - bos_token_id (
int, 선택 사항) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다. - eos_token_id (
Union[int, list[int]], 선택) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다. - pad_token_id (
int, 선택 사항) — 어휘에서 패딩에 사용되는 토큰 ID입니다. - num_mtp_layers (
int, 선택 사항, 기본값 1) — 기본 transformer 모델 뒤에 추가할 수 있는 Multi-Token Prediction(MTP) 모듈의 수입니다.0인 경우 모델은 표준 decoder처럼 동작합니다.>0인 경우, 추론 시 각 추가 모듈이generate(..., use_mtp=True)를 통한 추측적 디코딩(speculative decoding)으로 미래 토큰을 하나 더 예측할 수 있습니다.
이것은 Glm4MoeModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Glm4 Moe 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 zai-org/GLM-4.5와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
예:
>>> from transformers import Glm4MoeModel, Glm4MoeConfig
>>> # Initializing a Glm4Moe style configuration
>>> configuration = Glm4MoeConfig()
>>> # Initializing a model from the GLM-4-MOE-100B-A10B style configuration
>>> model = Glm4MoeModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGlm4MoeModel
클래스 transformers.Glm4MoeModel
< source >( config: Glm4MoeConfig )
매개변수
- config (Glm4MoeConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Gl
이 모델은 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast or tuple(torch.FloatTensor)
매개변수
- 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.FloatTensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델의 내부 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대한 더 세밀한 제어가 필요한 경우 유용합니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
MoeModelOutputWithPast 또는 tuple(torch.FloatTensor)
MoeModelOutputWithPast 또는 torch.FloatTensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(Glm4MoeConfig)과 입력에 따라 다양한 요소를 포함합니다.
Glm4MoeModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.FloatTensor, 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.FloatTensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.FloatTensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.FloatTensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.FloatTensor의 튜플로, 형태는(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
router_logits (
tuple(torch.FloatTensor), 선택,output_router_probs=True와config.add_router_probs=True가 전달되었거나config.output_router_probs=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.FloatTensor의 튜플로, 형태는(batch_size, sequence_length, num_experts)입니다.MoE 라우터가 계산하는 softmax 적용 후의 원시 라우터 로짓(raw router logits)입니다. 이 값들은 Mixture of Experts 모델의 보조 손실(auxiliary loss)을 계산하는 데 사용됩니다.
Glm4MoeForCausalLM
클래스 transformers.Glm4MoeForCausalLM
< source >( config: Glm4MoeConfig )
매개변수
- config (Glm4MoeConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
causal language modeling을 위한 Glm4 Moe 모델.
이 모델은 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.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast or tuple(torch.FloatTensor)
매개변수
- 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.FloatTensor, 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참조). - logits_to_keep (
Union[int, torch.Tensor], 선택 사항, 기본값0) —int인 경우, 마지막logits_to_keep토큰에 대한 logits를 계산합니다.0인 경우, 모든input_ids에 대한 logits를 계산합니다(특수한 경우). 생성에는 마지막 토큰의 logits만 필요하며, 해당 토큰에 대해서만 계산하면 메모리를 절약할 수 있습니다. 이는 긴 시퀀스나 큰 어휘 크기의 경우 상당한 이점을 제공합니다.torch.Tensor인 경우, 시퀀스 길이 차원에서 유지할 인덱스에 해당하는 1차원 텐서여야 합니다. 이는 패킹된 텐서 형식(배치와 시퀀스 길이를 단일 차원으로 사용하는 경우)을 사용할 때 유용합니다.
반환값
MoeCausalLMOutputWithPast 또는 tuple(torch.FloatTensor)
MoeCausalLMOutputWithPast 또는 torch.FloatTensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(Glm4MoeConfig)과 입력에 따라 다양한 요소를 포함합니다.
Glm4MoeForCausalLM의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.FloatTensor, shape(1,), 선택,labels이 제공될 때 반환됨) — 언어 모델링 손실(다음 토큰 예측용).logits (
torch.FloatTensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).aux_loss (
torch.FloatTensor, 선택,output_router_logits=True가 전달되었거나config.output_router_logits=True인 경우, 그리고 모델이 로드 밸런싱 손실로 라우터를 학습하는 경우 반환됨) — 희소 모듈에 대한 로드 밸런싱 보조 손실입니다. 대신 라우터 바이어스로 전문가를 균형 맞추는 모델(DeepSeek-V3 및 이를 기반으로 파생된 아키텍처)은router_logits를 반환하되, 여기서는None을 반환합니다.router_logits (
tuple(torch.FloatTensor), 선택 사항,output_router_logits=True가 전달되었거나config.output_router_logits=True인 경우 반환됨) — 각 sparse layer에 하나씩 포함된torch.FloatTensor의 튜플로, shape은(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.FloatTensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.FloatTensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.FloatTensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.FloatTensor의 튜플로, 형태는(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
예:
>>> from transformers import AutoTokenizer, Glm4MoeForCausalLM
>>> model = Glm4MoeForCausalLM.from_pretrained("meta-glm4_moe/Glm4Moe-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-glm4_moe/Glm4Moe-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."