Transformers documentation

Hy4-Preview

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

이 모델은 2026-09-07에 Hugging Face Transformers에 기여되었습니다.

Tensor parallelism Expert parallelism

Hy4-Preview

개요

Hy4-Preview는 토큰당 49B의 파라미터를 활성화하는 780B 파라미터 규모의 mixture-of-experts 언어 모델입니다. 각 MoE 레이어에는 256개의 라우팅 전문가와 항상 활성화되는 공유 전문가 1개가 포함되며, 모든 토큰을 이 중 8개로 라우팅합니다. 컨텍스트 윈도우는 1M 토큰입니다.

이 아키텍처는 네 가지 기능을 결합합니다:

  • Multi-head Latent Attention (MLA)는 key와 value를 저랭크 잠재 공간(kv_lora_rank)으로 압축한 뒤, kv_b_proj를 통해 각 query head당 하나의 key/value로 다시 확장합니다.
  • DeepSeek Sparse Attention (DSA)는 경량 인덱서를 사용하여 쿼리당 index_topk개의 키를 선택합니다. IndexShare를 따르며, indexer_types에서 "full"로 표시된 레이어만 인덱서를 실행하고, "shared" 레이어는 이전 full 레이어의 선택을 재사용합니다.
  • 각 헤드가 softmax에 참여하되 값에는 기여하지 않는 sink logit을 가지는 학습 가능한 attention sinks를 사용한 Gated MLA로, GPT-OSS와 동일한 방식입니다.
  • 독립적 하이퍼커넥션(iHC)은 단순한 잔차 경로를 hc_mult개의 병렬 잔차 스트림으로 대체하며, 각 서브레이어 실행 전에는 이 스트림들을 병합하고 실행 후에는 다시 분배합니다.

구현에서는 멀티 토큰 예측(MTP) 레이어를 실행하지 않습니다. 공개된 체크포인트에는 다른 런타임이 추측적 디코딩에 사용할 수 있도록 해당 가중치가 유지되며, 로드 시에는 무시됩니다.

사용 예시

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "tencent/Hy4-Preview"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto")

messages = [{"role": "user", "content": "Explain in one sentence why the sky is usually blue."}]
inputs = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=64, do_sample=False)
print(tokenizer.decode(outputs[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))

전체 체크포인트가 단일 가속기에 맞지 않습니다. 텐서 병렬로 샤딩하거나, 전문가 병렬로 각 전문가 그룹을 개별 장치에 배치하세요:

from transformers import AutoModelForCausalLM, DistributedConfig

# Tensor parallel: launch with `torchrun --nproc-per-node <world_size>`.
model = AutoModelForCausalLM.from_pretrained(
    model_id, dtype=torch.bfloat16, distributed_config=DistributedConfig(tp_size=16)
)

# Expert parallel: routed experts are split along the expert axis.
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    distributed_config=DistributedConfig(tp_size=16, ep_size=16),
)

Expert parallelism은 추론 전용입니다. routed-expert all-reduce에는 backward pass가 없기 때문입니다.

HYV4Config

클래스 transformers.HYV4Config

< >

( 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 = 120832hidden_size: int = 2816intermediate_size: int = 6912moe_intermediate_size: int = 768num_hidden_layers: int = 34num_attention_heads: int = 32num_key_value_heads: int = 32head_dim: int = 256hidden_act: str = 'silu'max_position_embeddings: int = 262144initializer_range: float = 0.006rms_norm_eps: float = 1e-05use_cache: bool = Truepad_token_id: int | None = 120002bos_token_id: int | None = 120000eos_token_id: int | list[int] | None = 120025tie_word_embeddings: bool = Falseattention_bias: bool = Falseattention_dropout: float = 0.0n_routed_experts: int = 256output_router_logits: bool = Falsen_shared_experts: int = 1num_experts_per_tok: int = 8routed_scaling_factor: float = 2.827norm_topk_prob: bool = Truen_group: int = 1topk_group: int = 1q_lora_rank: int = 1536kv_lora_rank: int = 512qk_nope_head_dim: int = 192qk_rope_head_dim: int = 64v_head_dim: int = 256mlp_layer_types: list[str] | None = Nonelayer_types: list[str] | None = Noneindex_topk: int = 2048index_head_dim: int = 128index_n_heads: int = 16indexer_types: list[str] | None = Nonehc_mult: int = 4hc_magnitude: float = 2.0hc_eps: float = 1e-06learnable_sink_init: float = 0.0swiglu_limit: float = 10.0rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None )

매개변수

  • vocab_size (int, 선택 사항, 기본값 120832) — 모델의 어휘 크기입니다. input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다.
  • hidden_size (int, 선택 사항, 기본값 2816) — 숨겨진 표현의 차원입니다.
  • intermediate_size (int, 선택 사항, 기본값 6912) — MLP 표현의 차원입니다.
  • moe_intermediate_size (int, 선택 사항, 기본값 768) — 라우팅된 전문가 MLP의 중간 크기입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 34) — Transformer decoder의 숨겨진 레이어 수.
  • num_attention_heads (int, 선택 사항, 기본값 32) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • num_key_value_heads (int, 선택 사항, 기본값 32) — 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, 선택 사항, 기본값 256) — Attention head의 차원입니다. None인 경우 hidden_size // num_attention_heads가 기본값으로 사용됩니다.
  • hidden_act (str, 선택 사항, 기본값 silu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어, "gelu", "relu", "silu" 등이 있습니다.
  • max_position_embeddings (int, 선택 사항, 기본값 262144) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다.
  • initializer_range (float, 선택 사항, 기본값 0.006) — 모든 가중치 행렬을 초기화하는 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, 선택 사항, 기본값 120002) — 어휘에서 패딩에 사용되는 토큰 ID입니다.
  • bos_token_id (int, 선택 사항, 기본값 120000) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다.
  • eos_token_id (Union[int, list[int]], 선택 사항, 기본값 120025) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다.
  • tie_word_embeddings (bool, 선택, 기본값 False) — 모델의 tied_weights_keys 매핑에 따라 가중치 임베딩을 묶을지 여부.
  • attention_bias (bool, 선택 사항, 기본값 False) — 자기 주의(self-attention) 시 query, key, value 및 출력 투영 계층에 bias를 사용할지 여부입니다.
  • attention_dropout (float, 선택 사항, 기본값 0.0) — Attention 확률에 적용할 dropout 비율입니다.
  • n_routed_experts (int, 선택 사항, 기본값 256) — 라우팅된 전문가의 수입니다.
  • output_router_logits (bool, 선택 사항, 기본값 False) — 모델이 router logits를 반환할지 여부입니다. 이 옵션을 활성화하면 load balancing loss와 router z-loss를 포함한 auxiliary loss도 출력할 수 있습니다.
  • n_shared_experts (int, 선택 사항, 기본값 1) — 공유 전문가의 수입니다.
  • num_experts_per_tok (int, 선택 사항, 기본값 8) — 각 토큰을 라우팅할 전문가의 수입니다. 이는 토큰 선택 라우팅의 top-k 값입니다.
  • routed_scaling_factor (float, 선택 사항, 기본값 2.827) — 라우팅된 전문가에 대한 스케일링 팩터입니다.
  • norm_topk_prob (bool, 선택 사항, 기본값 True) — 라우팅된 전문가의 가중치를 정규화할지 여부입니다.
  • n_group (int, 선택 사항, 기본값 1) — 라우팅을 위한 전문가 그룹 수입니다. HYV4는 전역적으로 전문가를 선택하므로, 이 값은 1(모든 전문가를 포함하는 하나의 그룹)입니다.
  • topk_group (int, 선택 사항, 기본값 1) — 라우팅 과정에서 유지되는 전문가 그룹의 수입니다. n_group=1인 경우, Glm4MoeLiteTopkRouter를 단순한 전역 top-k로 재사용합니다.
  • q_lora_rank (int, 선택 사항, 기본값 1536) — 쿼리 투영에 사용되는 LoRA 행렬의 랭크입니다.
  • kv_lora_rank (int, 선택 사항, 기본값 512) — 키 및 값 투영에 사용되는 LoRA 행렬의 랭크입니다.
  • qk_nope_head_dim (int, 선택 사항, 기본값 192) — Rotary position embeddings를 사용하지 않는 query/key head의 차원입니다.
  • qk_rope_head_dim (int, 선택 사항, 기본값 64) — 회전 위치 임베딩을 사용하는 쿼리/키 헤드의 차원입니다.
  • v_head_dim (int, 선택 사항, 기본값 256) — value head의 차원입니다.
  • mlp_layer_types (list[str], 선택 사항) — 레이어별 MLP 유형으로, "dense" 또는 "sparse" 중 하나입니다. 기본값은 dense 레이어 1개 뒤에 sparse MoE 레이어가 오는 구성입니다.
  • layer_types (list[str], 선택 사항) — 각 레이어 인덱스를 해당 레이어 유형에 명시적으로 매핑하는 목록입니다. 제공되지 않으면 config 값에 기반하여 자동으로 생성됩니다.
  • index_topk (int, 선택 사항, 기본값 2048) — 각 DSA 쿼리가 선택하는 최대 키 위치 수입니다.
  • index_head_dim (int, 선택 사항, 기본값 128) — 각 DSA indexer 헤드의 숨겨진 차원입니다.
  • index_n_heads (int, 선택 사항, 기본값 16) — DSA 인덱서 헤드 수입니다.
  • indexer_types (list[str], 선택 사항) — 레이어별 DSA indexer 유형으로, "full" 또는 "shared" 중 하나입니다. shared 레이어는 동일한 forward 요청 내에서 가장 최근의 full indexer를 재사용합니다.
  • hc_mult (int, 선택 사항, 기본값 4) — iHC가 유지하는 hidden-state 채널 수입니다.
  • hc_magnitude (float, 선택 사항, 기본값 2.0) — iHC post-gating branch에 적용되는 스케일입니다.
  • hc_eps (float, 선택 사항, 기본값 1e-6) — iHC 시그모이드 게이트에 추가되는 수치적 epsilon입니다.
  • learnable_sink_init (float, 선택 사항, 기본값 0.0) — 학습된 attention-sink logit의 초기 값입니다.
  • swiglu_limit (float, 선택 사항, 기본값 10.0) — 라우팅된 전문가 SwiGLU 클램프의 크기입니다. 0 이하의 값은 클램프를 비활성화합니다.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는 rope_theta 값이 포함되어야 하며, 더 긴 max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다.

이것은 HYV4Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Hy V4 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 tencent/Hy4-preview와 유사한 설정이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

HYV4Model

class transformers.HYV4Model

< >

( config: HYV4Config )

매개변수

  • config (HYV4Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

특정 헤드가 위에 없는 상태의 Hy V4 Model은 원시 hidden-states를 출력합니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( 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()를 참조하세요.

    입력 ID란 무엇인가요?

  • 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].

    포지션 ID란 무엇인가요?

  • 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인 경우)로, 구성(HYV4Config)과 입력에 따라 다양한 요소를 포함합니다.

HYV4Model의 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)을 계산하는 데 사용됩니다.

HYV4ForCausalLM

클래스 transformers.HYV4ForCausalLM

< >

( config: HYV4Config )

매개변수

  • config (HYV4Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

Hy V4 모델은 인과적 언어 모델링을 위한 것입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( 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'> ) → MoeCausalLMOutputWithPast or tuple(torch.Tensor)

매개변수

  • input_ids (torch.LongTensor 형상이 (batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • 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].

    포지션 ID란 무엇인가요?

  • 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차원 텐서여야 합니다. 이는 패킹된 텐서 형식(배치와 시퀀스 길이를 단일 차원으로 사용하는 경우)을 사용할 때 유용합니다.

반환값

MoeCausalLMOutputWithPast 또는 tuple(torch.Tensor)

MoeCausalLMOutputWithPast 또는 torch.Tensor의 튜플(return_dict=False이 전달되거나 config.return_dict=False인 경우)로, 구성(HYV4Config)과 입력에 따라 다양한 요소를 포함합니다.

HYV4ForCausalLM의 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, HYV4ForCausalLM

>>> model = HYV4ForCausalLM.from_pretrained("meta-hy_v4/HYV4-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-hy_v4/HYV4-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."
Update on GitHub