Transformers documentation
GLM-5, GLM-5.1, GLM-5.2, GLM-5.3
Эта модель была опубликована в HF papers 17.02.2026 и добавлена в Hugging Face Transformers 09.02.2026.
GLM-5, GLM-5.1, GLM-5.2, GLM-5.3
Обзор
Языковые модели GLM-5, GLM-5.1, GLM-5.2 и GLM-5.3 используют этот класс. Реализация в transformers не включает слой MTP.
GLM-5.3
GLM-5.3 использует ту же базовую модель, что и GLM-5.2 — все улучшения получены на этапе пост-обучения. По сравнению с GLM-5.2, он значительно лучше справляется со сложным кодированием и задачами с длинным горизонтом:
- Улучшенное программирование: GLM-5.3 — самая мощная модель с открытыми весами для программирования, показывающая на 50% более высокие результаты, чем GLM-5.2, на нашем внутреннем тесте Z.ai Code Bench. Она также демонстрирует лучший результат среди открытых моделей на публичных бенчмарках, включая Terminal Bench 3.0 и Agents’ Last Exam.
- Эмерджентные кибервозможности: по мере масштабирования постобучения кибервозможности развивались быстрее, чем мы ожидали. GLM-5.3 демонстрирует передовые результаты на CyberGym в области обнаружения уязвимостей, а наибольший прирост наблюдается на более высоких этапах цепочки эксплуатации, где он более чем вдвое превосходит GLM-5.2 на бенчмарках эксплуатации.

GLM-5.2
GLM-5.2, наша новейшая флагманская модель для задач с длительным горизонтом. Она демонстрирует существенный скачок в возможностях для таких задач по сравнению с предшественником GLM-5.1 и впервые обеспечивает их на стабильном контексте в 1 млн токенов.
Среди новых возможностей GLM-5.2:
- Надёжный контекст в 1 млн токенов: стабильно поддерживает работу с длинными временными горизонтами
- Продвинутое программирование с гибким уровнем усилий: Усиленные возможности программирования с несколькими уровнями усилий для размышлений, позволяющими балансировать между производительностью и задержкой
- Улучшенная архитектура: мы предлагаем IndexShare, который переиспользует один и тот же индексатор для каждой группы из четырёх слоёв разреженного внимания, сокращая FLOPs на токен в 2,9 раза при длине контекста 1M. Мы также улучшили слой MTP в GLM-5.2 для спекулятивного декодирования, увеличив длину принятия до 20%

На стандартных бенчмарках по программированию GLM-5.2 является самой сильной open-source моделью, значительно превосходя GLM-5.1: 81.0 против 62.0 на Terminal-Bench 2.1 и 62.1 против 58.4 на SWE-bench Pro. Модель также сокращает разрыв с закрытыми frontier-моделями — на Terminal-Bench 2.1 (81.0) она уступает Claude Opus 4.8 (85.0) всего несколько пунктов — при этом сохраняя преимущество перед Gemini 3.1 Pro.
Подробнее — в нашем блоге.
GLM-5.1
GLM-5.1 — наша флагманская модель нового поколения для агентной инженерии, обладающая значительно более мощными возможностями в области программирования по сравнению с предыдущей версией. Она демонстрирует наилучшие в своем классе результаты на SWE-Bench Pro и значительно превосходит GLM-5 по показателям на NL2Repo (генерация репозиториев) и Terminal-Bench 2.0 (задачи реального мира в терминале).

Но наиболее значимый скачок выходит за рамки показателей первого прохода. Предыдущие модели, включая GLM-5, склонны исчерпывать свой арсенал на ранних этапах: они применяют знакомые приёмы для быстрого начального прогресса, а затем упираются в потолок. Выделение им дополнительного времени не помогает.
GLM-5.1, напротив, создан для сохранения эффективности на агентных задачах в течение значительно более длительных периодов. Мы обнаружили, что модель демонстрирует более взвешенное суждение при работе с неоднозначными проблемами и сохраняет продуктивность в ходе длительных сессий. Она декомпозирует сложные задачи, проводит эксперименты, анализирует результаты и выявляет препятствия с высокой точностью. За счет повторного анализа рассуждений и корректировки стратегии в ходе итераций GLM-5.1 поддерживает оптимизацию на протяжении сотен раундов и тысяч вызовов инструментов. Чем дольше работает модель, тем лучше результат.
GLM-5
GLM-5 (GlmMoeDsa) — это модель mixture-of-experts с 744 млрд параметров и 40 млрд активных параметров на токен, использующая DeepSeek Sparse Attention (DSA) для эффективной обработки контекста длиной 200K токенов. Модель обучалась исключительно на чипах Huawei Ascend и демонстрирует производительность на уровне передовых моделей в задачах рассуждений и работы с длинным контекстом.
Благодаря прогрессу как в предобучении, так и в постобучении, GLM-5 демонстрирует значительное улучшение по сравнению с GLM-4.7 на широком спектре академических бенчмарков и обеспечивает наилучшие в классе результаты среди всех открытых моделей в мире на задачах рассуждений, программирования и агентных задач, сокращая разрыв с передовыми моделями.

GlmMoeDsaConfig
класс transformers.GlmMoeDsaConfig
< 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 = 154880hidden_size: int = 6144intermediate_size: int = 12288moe_intermediate_size: int = 2048num_hidden_layers: int = 78num_attention_heads: int = 64num_key_value_heads: int = 64n_shared_experts: int = 1n_routed_experts: int = 256output_router_logits: bool = Falserouted_scaling_factor: float = 2.5kv_lora_rank: int = 512q_lora_rank: int = 2048qk_rope_head_dim: int = 64v_head_dim: int = 256qk_nope_head_dim: int = 192n_group: int = 1topk_group: int = 1num_experts_per_tok: int = 8norm_topk_prob: bool = Truehidden_act: str = 'silu'max_position_embeddings: int = 202752initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1tie_word_embeddings: bool = Falserope_parameters: dict | None = Nonemlp_layer_types: list[str] | None = Noneattention_bias: bool = Falseattention_dropout: float | int = 0.0index_topk: int = 2048index_head_dim: int = 128index_n_heads: int = 32mlp_bias: bool = Falsehead_dim: int = 64first_k_dense_replace: int = 3layer_types: list[str] | None = Noneindexer_types: list[str] | None = None )
Параметры
- vocab_size (
int, необязательный, по умолчанию154880) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - hidden_size (
int, необязательный, по умолчанию6144) — Размерность скрытых представлений. - intermediate_size (
int, необязательный, по умолчанию12288) — Размерность представлений MLP. - moe_intermediate_size (
int, необязательный, по умолчанию2048) — Промежуточный размер MLP маршрутизированных экспертов. - num_hidden_layers (
int, необязательный, по умолчанию78) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию64) — Количество головок внимания в каждом слое внимания декодера Transformer. - num_key_value_heads (
int, необязательный, по умолчанию64) — Это количество ключевых и value-голов, используемых для реализации Grouped Query Attention. Еслиnum_key_value_heads=num_attention_heads, модель использует Multi Head Attention (MHA); еслиnum_key_value_heads=1— Multi Query Attention (MQA); в остальных случаях используется GQA. При конвертации мультиголовного чекпоинта в GQA-чекпоинт каждая групповая ключевая и value-голова должна конструироваться путем усреднения (meanpooling) всех исходных голов в этой группе. Дополнительные подробности см. в этой статье. Если значение не указано, по умолчанию используетсяnum_attention_heads. - n_shared_experts (
int, необязательный, по умолчанию1) — Количество общих экспертов. - n_routed_experts (
int, необязательный, по умолчанию256) — Количество маршрутизируемых экспертов. - output_router_logits (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли модели возвращать логиты роутера. Включение этого параметра также позволит модели выводить вспомогательную потерю, включая потерю балансировки нагрузки и z-потерю роутера. - routed_scaling_factor (
float, необязательный, по умолчанию2.5) — Коэффициент масштабирования для маршрутизированных экспертов. - kv_lora_rank (
int, необязательный, по умолчанию512) — Ранг матриц LoRA для проекций ключей и значений. - q_lora_rank (
int, необязательный, по умолчанию2048) — Ранг матриц LoRA для проекций запросов. - qk_rope_head_dim (
int, необязательный, по умолчанию64) — Размерность заголовков запроса/ключа, для которых используются вращающиеся позиционные эмбеддинги. - v_head_dim (
int, необязательный, по умолчанию256) — Размерность heads значений. - qk_nope_head_dim (
int, необязательный, по умолчанию192) — Размерность заголовков запроса/ключа, для которых не используются вращающиеся позиционные эмбеддинги. - n_group (
int, необязательный, по умолчанию 1) — Количество групп для маршрутизируемых экспертов. - topk_group (
int, необязательный, по умолчанию1) — Количество выбранных групп для каждого токена (для каждого токена, чтобы выбранные эксперты находились только в пределахtopk_groupгрупп). - num_experts_per_tok (
int, необязательный, по умолчанию8) — Количество экспертов, к которым маршрутизируется каждый токен. Это значение top-k для маршрутизации по выбору токена. - norm_topk_prob (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли нормализовать веса маршрутизированных экспертов. - hidden_act (
str, необязательный, по умолчаниюsilu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - max_position_embeddings (
int, необязательный, по умолчанию202752) — Максимальная длина последовательности, с которой может использоваться эта модель. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов. - rms_norm_eps (
float, необязательный, по умолчанию1e-05) — Значение epsilon, используемое слоями нормализации rms. - use_cache (
bool, необязательный, по умолчаниюTrue) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только еслиconfig.is_decoder=Trueили если модель является генеративной моделью только с декодером. - pad_token_id (
int, необязательный) — Идентификатор токена, используемого для выравнивания в словаре. - bos_token_id (
int, необязательный, по умолчанию0) — Идентификатор токена, используемого для обозначения начала потока в словаре. - eos_token_id (
Union[int, list[int]], необязательный, по умолчанию1) — Идентификатор токена, используемого для обозначения конца потока в словаре. - tie_word_embeddings (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли связывать веса эмбеддингов согласно маппингуtied_weights_keysмодели. - rope_parameters (
dict, необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. В словаре должно быть указано значение дляrope_thetaи, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длиннымиmax_position_embeddings. - mlp_layer_types (
list, необязательный) — шаблон типа MLP для каждого слоя ("dense"или"sparse"). По умолчанию: 3 плотных слоя, остальные — разреженные. - attention_bias (
bool, необязательный, по умолчаниюFalse) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании. - attention_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для вероятностей внимания. - index_topk (
int, необязательный, по умолчанию 2048) — Количество верхних токенов, выбираемых индексатором для разреженного внимания. - index_head_dim (
int, необязательный, по умолчанию 128) — Размерность головы для проекций индексатора (DSA). - index_n_heads (
int, необязательный, по умолчанию 32) — Количество головок для проекций индексатора (DSA). - mlp_bias (
bool, необязательный, по умолчаниюFalse) — Использовать ли смещение (bias) в слоях up_proj, down_proj и gate_proj внутри MLP-слоёв. - head_dim (
int, необязательный, по умолчанию64) — Размерность головы внимания. Если значение равно None, по умолчанию используется hidden_size // num_attention_heads - first_k_dense_replace (
int, необязательный, по умолчанию 3) — Количество начальных слоёв, использующих плотный MLP; остальные слои используют блок MoE. - layer_types (
list[str], необязательный) — Список, в котором явно указывается тип слоя для каждого индекса слоя. Если не задан, будет автоматически сгенерирован на основе значений конфигурации. - indexer_types (
list[str], необязательный) — Режим индексатора для каждого слоя ("full"запускает индексатор,"shared"переиспользует top-k предыдущего полного слоя). По умолчанию используется шаблон, выводимый изindex_topk_freq/index_skip_topk_offset(илиindex_topk_pattern).
Это класс конфигурации для хранения настроек модели GlmMoeDsaModel. Он используется для создания модели Glm Moe Dsa в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации zai-org/GLM-5
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
>>> from transformers import GlmMoeDsaConfig, GlmMoeDsaModel
>>> # Initializing a GLM-MoE-DSA configuration
>>> configuration = GlmMoeDsaConfig()
>>> # Initializing a model from the configuration
>>> model = GlmMoeDsaModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGlmMoeDsaModel
класс transformers.GlmMoeDsaModel
< source >( config: GlmMoeDsaConfig )
Параметры
- config (GlmMoeDsaConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Для загрузки весов модели используйте метод from_pretrained().
Модель GlM Moe Dsa без дополнительных слоёв, выводящая необработанные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.Tensorформы(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), содержащий различные
элементы в зависимости от конфигурации (GlmMoeDsaConfig) и входных данных.
Метод forward модели GlmMoeDsaModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.past_key_values (
Cache, необязательный, возвращается при передачеuse_cache=Trueили когдаconfig.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и, при необходимости, если
config.is_encoder_decoder=True, в блоках кросс-внимания), которые можно использовать (см. входной параметрpast_key_values) для ускорения последовательного декодирования.hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
router_logits (
tuple(torch.Tensor), необязательный, возвращается, если переданыoutput_router_probs=Trueиconfig.add_router_probs=Trueили еслиconfig.output_router_probs=True) — Кортежtorch.Tensor(по одному для каждого слоя) формы(batch_size, sequence_length, num_experts).Сырые логиты роутера (после softmax), вычисляемые роутерами MoE; эти значения используются для вычисления вспомогательной функции потерь в моделях Mixture of Experts.
GlmMoeDsaForCausalLM
класс transformers.GlmMoeDsaForCausalLM
< source >( config: GlmMoeDsaConfig )
Параметры
- config (GlmMoeDsaConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Для загрузки весов модели используйте метод from_pretrained().
Модель Glm Moe Dsa для моделирования языка с причинно-следственной связью.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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'> ) → MoeCausalLMOutputWithPast or tuple(torch.Tensor)
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[0, ..., config.vocab_size]или быть равны -100 (см. docstringinput_ids). Токены с индексами, установленными в-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 для последнихlogits_to_keepтокенов. Если указано0, logits вычисляются для всехinput_ids(особый случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типаtorch.Tensor, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (один размер для batch и длины последовательности).
Возвращает
MoeCausalLMOutputWithPast или tuple(torch.Tensor)
MoeCausalLMOutputWithPast или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (GlmMoeDsaConfig) и входных данных.
Метод GlmMoeDsaForCausalLM forward переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери языковой модели (для предсказания следующего токена).logits (
torch.Tensorформы(batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).aux_loss (
torch.Tensor, необязательный, возвращается при передачеoutput_router_logits=Trueили приconfig.output_router_logits=True, если модель обучает свой роутер с потерей балансировки нагрузки) — вспомогательная потеря балансировки нагрузки для разреженных модулей. Модели, которые балансируют своих экспертов с помощью смещения роутера (DeepSeek-V3 и архитектуры, производные от него), возвращают здесьNone, но при этом всё равно возвращаютrouter_logits.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.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход
past_key_values) для ускорения последовательного декодирования.hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoTokenizer, GlmMoeDsaForCausalLM
>>> model = GlmMoeDsaForCausalLM.from_pretrained("meta-glm_moe_dsa/GlmMoeDsa-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-glm_moe_dsa/GlmMoeDsa-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."