Transformers 文档

Starcoder2

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

该模型于 2024 年 2 月 29 日在 HF 论文中发布,并于 2024 年 2 月 28 日贡献给 Hugging Face Transformers。

Starcoder2

FlashAttention SDPA Tensor parallelism

概述

StarCoder2 是一个开源代码大语言模型(LLM)系列,包含 3B、7B 和 15B 参数三种不同规模。旗舰模型 StarCoder2-15B 基于来自 The Stack v2 的超过 4 万亿 token 和 600 多种编程语言进行训练。所有模型均使用分组查询注意力(Grouped Query Attention)、16,384 个 token 的上下文窗口以及 4,096 个 token 的滑动窗口注意力,并使用“中间填充”(Fill-in-the-Middle)目标进行训练。这些模型随论文 《StarCoder 2 and The Stack v2: The Next Generation》 一同发布,作者包括 Anton Lozhkov、Raymond Li、Loubna Ben Allal、Federico Cassano、Joel Lamy-Poirier、Nouamane Tazi、Ao Tang、Dmytro Pykhtar、Jiawei Liu、Yuxiang Wei、Tianyang Liu、Max Tian、Denis Kocetkov、Arthur Zucker、Younes Belkada、Zijian Wang、Qian Liu、Dmitry Abulkhanov、Indraneil Paul、Zhuang Li、Wen-Ding Li、Megan Risdal、Jia Li、Jian Zhu、Terry Yue Zhuo、Evgenii Zheltonozhskii、Nii Osae Osae Dade、Wenhao Yu、Lucas Krauß、Naman Jain、Yixuan Su、Xuanli He、Manan Dey、Edoardo Abati、Yekun Chai、Niklas Muennighoff、Xiangru Tang、Muhtasham Oblokulov、Christopher Akiki、Marc Marone、Chenghao Mou、Mayank Mishra、Alex Gu、Binyuan Hui、Tri Dao、Armel Zebaze、Olivier Dehaene、Nicolas Patry、Canwen Xu、Julian McAuley、Han Hu、Torsten Scholak、Sebastien Paquet、Jennifer Robinson、Carolyn Jane Anderson、Nicolas Chapados、Mostofa Patwary、Nima Tajbakhsh、Yacine Jernite、Carlos Muñoz Ferrandis、Lingming Zhang、Sean Hughes、Thomas Wolf、Arjun Guha、Leandro von Werra 以及 Harm de Vries。

论文摘要如下:

BigCode 项目是一个专注于负责任地开发代码大语言模型(Code LLM)的开放科学合作项目,此次推出了 StarCoder2。通过与 Software Heritage (SWH) 的合作,我们在其数字公共资源代码库的基础上构建了 The Stack v2。除了涵盖 619 种编程语言的 SWH 仓库外,我们还精心挑选了其他高质量数据源,如 GitHub 拉取请求、Kaggle 笔记本和代码文档。这使得训练集规模达到了第一个 StarCoder 数据集的 4 倍。我们使用 3.3 到 4.3 万亿 token 对 3B、7B 和 15B 参数的 StarCoder2 模型进行了训练,并在全面的代码大语言模型基准测试中对其进行了严格评估。我们发现,我们的小型模型 StarCoder2-3B 在大多数基准测试中表现优于同等规模的其他代码大语言模型,同时也超过了 StarCoderBase-15B。我们的大型模型 StarCoder2-15B 显著优于其他同等规模的模型。此外,它的表现与规模是其两倍多的 CodeLlama-34B 持平或更优。尽管 DeepSeekCoder-33B 在高资源语言的代码补全方面表现最出色,但我们发现 StarCoder2-15B 在数学和代码推理基准测试以及几种低资源语言上表现更优。我们以 OpenRAIL 许可协议发布了模型权重,并发布了源代码数据的软件遗产持久标识符(SWHIDs),确保训练数据的完全透明。

许可证

模型根据 BigCode OpenRAIL-M v1 许可协议 授权。

使用技巧

可以在 HuggingFace Hub 中找到 StarCoder2 模型。你可以在 StarCoder2 的 GitHub 仓库 中找到一些推理和微调的示例。

这些开箱即用的检查点(checkpoints)可以通过 HuggingFace Hub 下载并使用。

from transformers import AutoModelForCausalLM, AutoTokenizer


model = AutoModelForCausalLM.from_pretrained("bigcode/starcoder2-7b", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("bigcode/starcoder2-7b")

prompt = "def print_hello_world():"

model_inputs = tokenizer([prompt], return_tensors="pt").to(model.device)

generated_ids = model.generate(**model_inputs, max_new_tokens=10, do_sample=False)
tokenizer.batch_decode(generated_ids)[0]
'def print_hello_world():\n    print("Hello World!")\n\ndef print'

Starcoder2Config

class transformers.Starcoder2Config

< >

( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None vocab_size: int = 49152 hidden_size: int = 3072 intermediate_size: int = 12288 num_hidden_layers: int = 30 num_attention_heads: int = 24 num_key_value_heads: int = 2 hidden_act: str = 'gelu_pytorch_tanh' max_position_embeddings: int = 4096 initializer_range: float = 0.018042 norm_epsilon: float = 1e-05 use_cache: bool = True bos_token_id: int | None = 50256 eos_token_id: int | list[int] | None = 50256 pad_token_id: int | None = None rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None sliding_window: int | None = None attention_dropout: float | int = 0.0 residual_dropout: float | int = 0.0 embedding_dropout: float | int = 0.0 use_bias: bool = True tie_word_embeddings: bool = True )

参数

  • vocab_size (int, 可选, 默认值为 49152) — 模型词汇表大小。定义了 input_ids 可以表示的不同 token 的数量。
  • hidden_size (int, 可选, 默认值为 3072) — 隐藏表示的维度。
  • intermediate_size (int, 可选, 默认值为 12288) — MLP 表示的维度。
  • num_hidden_layers (int, 可选, 默认值为 30) — Transformer 解码器中隐藏层的数量。
  • num_attention_heads (int, 可选, 默认值为 24) — Transformer 解码器中每个注意力层的注意力头数量。
  • num_key_value_heads (int, 可选, 默认值为 2) — 这是用于实现分组查询注意力(GQA)的 key_value 头数量。如果 num_key_value_heads=num_attention_heads,模型将使用多头注意力(MHA);如果 num_key_value_heads=1,模型将使用多查询注意力(MQA);否则将使用 GQA。在将多头检查点转换为 GQA 检查点时,每个组的 key 和 value 头应由该组内所有原始头进行平均池化构建。有关更多详细信息,请查看 这篇论文。如果未指定,将默认为 num_attention_heads
  • hidden_act (str, 可选, 默认值为 gelu_pytorch_tanh) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu", "relu", "silu" 等。
  • max_position_embeddings (int, 可选, 默认值为 4096) — 此模型可能使用的最大序列长度。
  • initializer_range (float, 可选, 默认值为 0.018042) — 用于初始化所有权重矩阵的截断正态初始化器(truncated_normal_initializer)的标准差。
  • norm_epsilon (float, 可选, 默认值为 1e-05) — 层归一化层使用的 epsilon 值。
  • use_cache (bool, 可选, 默认值为 True) — 模型是否应该返回最后的键/值注意力(并非所有模型都使用)。仅在 config.is_decoder=True 或当模型是仅解码器生成模型时相关。
  • bos_token_id (int, 可选, 默认值为 50256) — 词汇表中用于流开始的 token id。
  • eos_token_id (Union[int, list[int]], 可选, 默认值为 50256) — 词汇表中用于流结束的 token id。
  • pad_token_id (int, 可选) — 词汇表中用于填充的 token id。
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 可选) — 包含 RoPE 嵌入配置参数的字典。该字典应包含 rope_theta 的值,如果希望在更长的 max_position_embeddings 下使用 RoPE,还可以选择包含用于缩放的参数。
  • sliding_window (int, 可选) — 滑动窗口注意力的窗口大小。如果为 None,则不应用滑动窗口。
  • attention_dropout (Union[float, int], 可选, 默认值为 0.0) — 注意力概率的丢弃率。
  • residual_dropout (Union[float, int], 可选, 默认值为 0.0) — 嵌入、编码器和池化器中所有全连接层的丢弃概率。
  • embedding_dropout (Union[float, int], 可选, 默认值为 0.0) — 嵌入的丢弃率。
  • use_bias (bool, 可选, 默认值为 True) — 是否在模型的线性层上使用偏置项。
  • tie_word_embeddings (bool, 可选, 默认值为 True) — 是否根据模型的 tied_weights_keys 映射绑定权重嵌入。

这是用于存储 Starcoder2Model 配置的配置类。它用于根据指定的参数实例化 Starcoder2 模型,定义模型架构。使用默认值实例化配置将产生与 bigcode/starcoder2-7b 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。

>>> from transformers import Starcoder2Model, Starcoder2Config

>>> # Initializing a Starcoder2 7B style configuration
>>> configuration = Starcoder2Config()

>>> # Initializing a model from the Starcoder2 7B style configuration
>>> model = Starcoder2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

Starcoder2Model

class transformers.Starcoder2Model

< >

( config: Starcoder2Config )

参数

  • config (Starcoder2Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。

裸 Starcoder2 模型,输出原始隐藏状态,顶部没有任何特定层。

该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None use_cache: bool | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] )

Starcoder2ForCausalLM

class transformers.Starcoder2ForCausalLM

< >

( config model_args: ~utils.generic.ModelArgs | None = None adapter_args: ~utils.generic.AdapterArgs | None = None lora_args: ~utils.generic.LoRAArgs | None = None tokenizer_args: ~utils.generic.TokenizerArgs | None = None dataset_args: ~utils.generic.DatasetArgs | None = None data_args: ~utils.generic.DataArgs | None = None training_args: ~utils.generic.TrainingArgs | None = None generation_args: ~utils.generic.GenerationArgs | None = None vision_tower_args: ~utils.generic.VisionTowerArgs | None = None qlora_args: ~utils.generic.QLoRAArgs | None = None vision_tower_template_args: ~utils.generic.VisionTowerTemplateArgs | None = None video_tower_args: ~utils.generic.VideoTowerArgs | None = None vision_config: ~utils.generic.VisionConfig | None = None video_config: ~utils.generic.VideoConfig | None = None load_dataset: bool | None = None load_data_collator: bool | None = None load_processor: bool | None = None load_lora_adapter: bool | None = None load_adapter: bool | None = None load_qlora_adapter: bool | None = None **kwargs: typing_extensions.Unpack[transformers.modeling_utils.PreTrainedModelKwargs] )

参数

  • config (Starcoder2ForCausalLM) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。

用于因果语言建模的 Starcoder2 模型。

该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None logits_to_keep: int | torch.Tensor = 0 **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) CausalLMOutputWithPast or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 词汇表中输入序列 token 的索引。填充(Padding)默认会被忽略。

    索引可以使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是 input IDs?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免对填充 token 索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的 token,
    • 0 表示 被掩码 的 token。

    什么是注意力掩码?

  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 每个输入序列 token 在位置嵌入中的位置索引。在范围 [0, config.n_positions - 1] 内选择。

    什么是位置 ID?

  • past_key_values (~cache_utils.Cache可选) — 预计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括当 use_cache=Trueconfig.use_cache=True 时模型在解码的前一个阶段返回的 past_key_values

    仅允许使用 Cache 实例作为输入,请参阅我们的 kv 缓存指南。如果未传递 past_key_values,将默认初始化 DynamicCache

    模型将输出与作为输入馈送的相同缓存格式。

    如果使用了 past_key_values,用户应仅输入形状为 (batch_size, unprocessed_length) 的未处理 input_ids(即未提供其过去键值状态的那些),而不是形状为 (batch_size, sequence_length) 的所有 input_ids

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 作为替代 input_ids 的选项,您可以选择直接传递嵌入表示。如果您想比模型内部的嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • labels (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于计算掩码语言建模损失的标签。索引应位于 [0, ..., config.vocab_size] 或 -100(请参阅 input_ids 文档字符串)。索引设置为 -100 的 token 将被忽略(掩码),损失仅针对标签位于 [0, ..., config.vocab_size] 中的 token 计算。
  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码(请参阅 past_key_values)。
  • logits_to_keep (Union[int, torch.Tensor]可选,默认值为 0) — 如果为 int,则计算最后 logits_to_keep 个 token 的 logit。如果为 0,则计算所有 input_ids 的 logit(特殊情况)。生成时仅需要最后一个 token 的 logit,仅针对该 token 计算它们可以节省内存,这对于长序列或大词汇表大小来说非常重要。如果为 torch.Tensor,则必须是对应于序列长度维度中要保留的索引的 1D 张量。这在使用打包张量格式(批大小和序列长度为单维度)时很有用。

返回

CausalLMOutputWithPast or tuple(torch.FloatTensor)

一个 CausalLMOutputWithPast 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(Starcoder2Config)和输入而不同的各种元素。

Starcoder2ForCausalLM 的前向(forward)方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • loss (torch.FloatTensor 形状为 (1,)可选,当提供 labels 时返回) — 语言建模损失(用于下一个 token 预测)。

  • logits (形状为 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 语言建模头部的预测分数(SoftMax 之前的每个词汇标记的分数)。

  • past_key_values (Cache,*可选*,当传入 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 Cache 实例。欲了解更多细节,请参阅我们的 KV 缓存指南

    包含预计算的隐藏状态(自注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

示例

>>> from transformers import AutoTokenizer, Starcoder2ForCausalLM

>>> model = Starcoder2ForCausalLM.from_pretrained("meta-starcoder2/Starcoder2-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-starcoder2/Starcoder2-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."

Starcoder2ForSequenceClassification

class transformers.Starcoder2ForSequenceClassification

< >

( config )

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) SequenceClassifierOutputWithPast or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 词汇表中输入序列 token 的索引。填充(Padding)默认会被忽略。

    索引可以使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是 input IDs?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免对填充 token 索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的 token,
    • 0 表示 被掩码 的 token。

    什么是注意力掩码?

  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 每个输入序列词元在位置嵌入中的位置索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • past_key_values (~cache_utils.Cache可选) — 预计算的隐藏状态(自注意力模块和交叉注意力模块中的键和值),可用于加速顺序解码。这通常包含模型在解码的先前阶段返回的 past_key_values(当 use_cache=Trueconfig.use_cache=True 时)。

    仅允许输入 Cache 实例,请参阅我们的 kv 缓存指南。如果未传递 past_key_values,默认将初始化 DynamicCache

    模型将输出与输入时相同格式的缓存。

    如果使用了 past_key_values,用户只需输入尚未处理的 input_ids(即其过去键值状态未提供给模型的输入),形状为 (batch_size, unprocessed_length),而不是形状为 (batch_size, sequence_length) 的完整 input_ids

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可以选择直接传入嵌入表示,而不是传入 input_ids。如果您想要比模型内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为相关向量,这会非常有用。
  • labels (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于计算掩码语言建模损失的标签。索引应在 [0, ..., config.vocab_size] 范围内或为 -100(请参阅 input_ids 文档字符串)。索引设置为 -100 的词元将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的词元进行计算。
  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。

返回

SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

一个 SequenceClassifierOutputWithPasttorch.FloatTensor 元组(如果传入了 return_dict=False 或当 config.return_dict=False 时),根据配置(None)和输入,其包含不同的元素。

The GenericForSequenceClassification forward method, overrides the __call__ special method.

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。

  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(如果 config.num_labels==1,则为回归)分数(SoftMax 之前)。

  • past_key_values (Cache,*可选*,当传入 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 Cache 实例。欲了解更多细节,请参阅我们的 KV 缓存指南

    包含预计算的隐藏状态(自注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

Starcoder2ForTokenClassification

class transformers.Starcoder2ForTokenClassification

< >

( config )

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) TokenClassifierOutputtuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 输入序列词元在词汇表中的索引。默认情况下,填充(Padding)将被忽略。

    索引可以使用 AutoTokenizer 获取。详细信息请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

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

    什么是位置 ID?

  • past_key_values (~cache_utils.Cache可选) — 预计算的隐藏状态(自注意力模块和交叉注意力模块中的键和值),可用于加速顺序解码。这通常包含模型在解码的先前阶段返回的 past_key_values(当 use_cache=Trueconfig.use_cache=True 时)。

    仅允许输入 Cache 实例,请参阅我们的 kv 缓存指南。如果未传递 past_key_values,默认将初始化 DynamicCache

    模型将输出与输入时相同格式的缓存。

    如果使用了 past_key_values,用户只需输入尚未处理的 input_ids(即其过去键值状态未提供给模型的输入),形状为 (batch_size, unprocessed_length),而不是形状为 (batch_size, sequence_length) 的完整 input_ids

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可以选择直接传入嵌入表示,而不是传入 input_ids。如果您想要比模型内部嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为相关向量,这会非常有用。
  • labels (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于计算掩码语言建模损失的标签。索引应在 [0, ..., config.vocab_size] 范围内或为 -100(请参阅 input_ids 文档字符串)。索引设置为 -100 的词元将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的词元进行计算。
  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。

返回

TokenClassifierOutputtuple(torch.FloatTensor)

一个 TokenClassifierOutputtorch.FloatTensor 元组(如果传递了 return_dict=Falseconfig.return_dict=False),包含取决于配置 (None) 和输入的各种元素。

The GenericForTokenClassification forward method, overrides the __call__ special method.

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失。

  • logits (形状为 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分类分数(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.