ai大模型

BLOOM

BLOOM,HuggingFace推出的大型语言模型(LLM)

标签:ai大模型

BLOOM官网,HuggingFace推出的大型语言模型(LLM)

什么是BLOOM?

人人都能用的多语种大模型来了!支持59种语言,参數1760亿,1000名科学家联合發起! 一直以来,很多大模型都由造它们出来的大型私營科技公司壟斷着。比如GPT-3等,對于普通人来說,再香也只能眼巴巴看着。不过现在,為了给你解馋,由近1000名科学家联合發起的一个志願專案,耗时一年多煉出了一个号称和GPT-3一样强大的语言模型。它的名字叫BLOOM,参數1760亿,不光支持英文或者中文,連西班牙语、法语等59种语言都支持,是目前最大的多语言開源语言模型。是的,从现在起,从代碼到資料集,BLOOM全部對外開放,所有人都可使用。

BLOOM官网: https://huggingface.co/bigscience/bloom

BLOOM参考文档: 

https://huggingface.co/docs/transformers/model_doc/bloom

BLOOM

动用法国超算、花費384块A100

BLOOM是一个BigScience專案,去年5月启动,由Hugging Face主導,收到了700万美元的公共捐款。共有来自全球60个国家、超过250个机构,以及超过1000名研究人员参与其中,其中包括以个人名義参加的Meta、谷歌等大厂员工。它的訓练在法国超級计算机Jean Zay上进行,共花費了384块A100 GPU,其中每块有80 GB記憶體,訓练吞吐量約150 TFLOP(该超算由低碳的核能提供动力,釋放的熱量还用来给学校供暖)。

BLOOM

BLOOM優势

然而,直到达到102%的时候,BLOOM才正式停止訓练。在經过耗时117天的訓练后,BLOOM在预定计劃时间内顺利完成。

最終,BLOOM具備以下特点:

  • 参數數量达到了1760亿,比GPT-3还多10亿。
  • 模型包含70層,每層具有112个注意力頭。
  • Token序列长度為2048。
  • 采用了GeLU激活函數。
  • 使用了总计3416亿条token(1.5TB文本資料)的資料集进行訓练。
  • 支持13种编程语言和46种自然语言。

值得一提的是,對于許多语言而言,如法语、西班牙语和阿拉伯语等,这是首次擁有自己的開源模型(尽管目前尚不支持日语,一些网友已經發现了这一点)。

此外,為了尽量減少生成結果中的偏見,参与專案的人员还經过了一輪人工过濾,對抓取到的資料进行了筛選。

目前,BLOOM的訓练對硬體設備有一定要求:

為了保證最佳效果,最好配備8块80GB的A100顯卡或16块40GB的A100顯卡。

这意味着只有規模稍大的團队才能承担这样的訓练需求。

当然,也可以選择在云平台上进行訓练,每小时最高費用為40美元。

最后,BLOOM表示將降低使用門槛,并计劃開發一个分布式系統,允許實验室之间共享模型。

BLOOM將成為一个不斷發展的模型家族,而非一勞永逸的專案。

BLOOM

BLOOM模型已透過 BigScience Workshop 提出了各种版本。BigScience 受到其他開放科学计劃的启發,在这些计劃中,研究人员汇集了他们的时间和資源,共同實现更高的影响。 BLOOM 的架构本质上类似于 GPT3(用于下一个令牌预测的自回歸模型),但已經在 46 种不同的语言和 13 种编程语言上进行了訓练。 模型的几个較小版本已在同一資料集上进行了訓练。BLOOM 有以下版本:

  • 綻放-560m
  • 綻放-1B1
  • 布鲁姆-1B7
  • 布鲁姆-3B
  • 布鲁姆-7B1
  • 綻放 (176B 参數)

資源

官方擁抱面孔和社区(由 表示)🌎資源列表,可帮助您開始使用 BLOOM。如果您有興趣提交要包含在此處的資源,请随时打開拉取请求,我们將對其进行审核!理想情况下,資源应演示新内容,而不是复制现有資源。

文本生成
  • BloomForCausalLM 由此 因果语言建模示例脚本 和 筆電 支持。

另请参阅:

  • 因果语言建模任務指南
  • 文本分类任務指南
  • 令牌分类任務指南
  • 問答任務指南

⚡️ 推理

  • 關于 優化故事的部落格:綻放推理 。
  • 一篇關于 DeepSpeed和Accelerate的令人难以置信的快速BLOOM推理的 部落格。

⚙️ 訓练

  • 關于 BLOOM 培訓背后的技術的 部落格。

布隆配置

變压器。 布隆配置

< >

vocab_size = 250880 hidden_size = 64 n_layer = 2 n_head = 8 layer_norm_epsilon = 1e-05 initializer_range = 0.0 = 0.02 use_cache = 真 bos_token_id = 1 eos_token_id = 2 apply_residual_connection_post_layernorm = 假 hidden_dropout = 0.0attention_dropout = 0.0 pretraining_tp = 1 slow_but_exact = 假 **kwargs

参數

  • vocab_size int ,可選 ,默认為 250880) — 布鲁姆模型的词汇大小。定義可以表示的不同令牌的最大數量 由 inputs_ids 时透過 调用 BloomModel 。检查 这个 討論 如何 vocab_size 已定義。
  • hidden_size int ,可選 ,默认為 64) — 嵌入和隐藏状態的维度。
  • n_layer int ,可選 ,默认為 2) — 變压器编碼器中的隐藏層數。
  • n_head int ,可選 ,默认為 8) — 轉换器编碼器中每个注意層的注意頭數。
  • layer_norm_epsilon float ,可選 ,默认為 1e-5) — 要在圖層歸一化圖層中使用的 epsilon。
  • initializer_range float ,可選 ,默认為 0.02) — 初始化所有權重矩阵的truncated_normal_initializer的标准偏差。
  • apply_residual_connection_post_layernorm bool ,可選 ,默认為 False) — 如果启用,则使用隐藏状態的層范數作為變压器块中的残差
  • hidden_dropout float ,可選 ,默认為 0.1) — 偏置压差上輟学函數的压差率。
  • attention_dropout float ,可選 ,默认為 0.1) — 应用于注意力概率的輟学率
  • use_cache bool ,可選 ,默认為 True) — 模型是否应返回最后一个键/值注意(并非所有模型都使用)。
  • pretraining_tp int ,可選 ,默认為 1) — 實验功能。威震天预訓练期间使用的張量并行秩。请参考 这里 文档 以了解有關它的更多信息。此值為 有必要确保预訓练結果的精确可重复性。请参考 这里 問题 。另请注意,仅当 slow_but_exact=True.
  • slow_but_exact bool ,可選 ,默认為 False) — 實验功能。是否使用缓慢但精确的注意力机制實现。而 合并 TP 秩張量,由于切片操作,結果可能略有不同 模型在威震天和我们的模型上訓练。请参考 这里 問题 。獲得更准确結果的解决方案是 启用此功能。启用此功能將損害推理的计算时间。可能会 在主模型被微调后解决 TP_rank=1。

这是用于存儲 BloomModel 配置的配置类。它用于實例化一个綻放 根据指定的参數建模,定義模型体系結构。使用 默认值將產生与 Bloom 架构类似的配置 大科学/綻放 。

配置對象繼承自 预訓练配置 ,可用于控制模型输出。阅讀 来自 PretrainedConfig 的文档以獲取更多信息。

例:


from从變压器 導入 BloomConfig,BloomModel

 
# 初始化一个布隆 
配置 = BloomConfig()

 
# 从配置初始化模型(使用随机權重 
模型 = BloomModel(配置)

 
# 訪問模型 
配置 = model.config 

綻放模型

變压器。 綻放模型

< >

配置 :BloomConfig

参數

  • config ( BloomConfig ) — 包含模型所有参數的模型配置类。 使用配置文件初始化不会加载与模型關联的權重,只会加载 配置。查看 from_pretrained() 加载模型權重的

裸露的Bloom模型變压器输出原始隐藏状態,頂部没有任何特定的磁頭。

此模型繼承自 预訓练模型 。检查超类文档以了解泛型方法 库實现其所有模型(例如下载或保存,调整输入嵌入的大小等)

这个模型也是一个 PyTorch torch.nn.Module 子类。 將其用作常規的 PyTorch 模块,并参考 PyTorch 文档了解与一般用法相關的所有事项 和行為。

向前

< >

input_ids :打字。可選[火炬。LongTensor] = 無 past_key_values :打字。联合[打字。元组[键入。元组[火炬。張量,火炬。Tensor], …], NoneType] = None attention_mask : typeping.可選[火炬。張量] = 無 head_mask :打字。可選[火炬。LongTensor] = 無 inputs_embeds :打字。可選[火炬。LongTensor] = 無 use_cache :打字。可選[bool] = 無 output_attentions :键入。可選[bool] = 無 output_hidden_states :键入。可選[bool] = 無 return_dict :键入。可選[bool] = 無 **deprecated_arguments transformers.modeling_outputs。BaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)

参數

  • input_ids torch.LongTensor 形状 (batch_size, input_ids_length)) — input_ids_length = sequence_length 如果 past_key_valuesNonepast_key_values[0][0].shape[2] ( sequence_length 的输入过去的键值状態)。词汇表中输入序列标記的索引。 

    如果 past_key_values仅使用,仅 input_ids 没有计算过去应该传递為 input_ids.

    獲取索引 可以使用自动标記器 。请参阅 PreTrainedTokenizer.encode() 和 预訓练分词器。 call () 了解详細信息。

    什么是输入 ID?

  • past_key_values Tuple[Tuple[torch.Tensor]] 长度 config.n_layers) — 包含模型计算的预先计算的隐藏状態(注意块中的键和值)(请参阅 past_key_values 输出如下)。可用于加快顺序解碼。这 input_ids 其中有 他们给予这个模型的过去不应该被当作 input_ids 因為它们已經被计算出来了。每个元素 past_key_values 是一个元组(past_key,past_value):
    • past_key: [batch_size * num_heads, head_dim, kv_length]
    • past_value: [batch_size * num_heads, kv_length, head_dim]
  • attention_mask torch.FloatTensor 形状 (batch_size, sequence_length)可選 ) — 掩碼以避免對填充令牌索引执行注意。在中選择的掩碼值 [0, 1]
    • 1 表示 未屏蔽 的令牌,
    • 0 表示屏蔽的令牌 masked

    什么是注意力面膜?

  • head_mask torch.FloatTensor 形状 (num_heads,)(num_layers, num_heads)可選 ) — 遮罩以消除自我注意模块的選定頭部。在中選择的掩碼值 [0, 1]
    • 1 表示頭部未 遮蓋
    • 0 表示頭部已 遮罩
  • inputs_embeds torch.FloatTensor 形状 (batch_size, sequence_length, hidden_size)可選 ) — (可選)而不是传递 input_ids 您可以選择直接传递嵌入式表示。这 如果您想更好地控制如何轉换,则很有用 input_ids 索引到關联的向量比 模型的内部嵌入查找矩阵。如果 past_key_values使用,可以選择仅使用最后一个 inputs_embeds 必须输入(请参阅 past_key_values)。
  • use_cache bool可選 ) — 如果設置為 Truepast_key_values 返回键值状態,可用于加快解碼速度(请参阅 past_key_values)。
  • output_attentions bool可選 ) — 是否返回所有注意力層的注意力張量。看 attentions 在返回下 張量以獲取更多详細信息。
  • output_hidden_states bool可選 ) — 是否返回所有圖層的隐藏状態。看 hidden_states 在返回的張量下 更多細節。
  • return_dict bool可選 ) — 是否返回 模型输出 而不是普通元组。

返回

transformers.modeling_outputs。BaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)

一个 transformers.modeling_outputs。BaseModelOutputWithPastAndCrossAttentions 或元组 torch.FloatTensor (如果 return_dict=False 已透過或何时 config.return_dict=False) 包括各种 元素取决于配置( BloomConfig )和输入。

  • last_hidden_state torch.FloatTensor 形状 (batch_size, sequence_length, hidden_size)) — 模型最后一層输出處的隐藏状態序列。

    如果 past_key_values 仅用于形状序列的最后一个隐藏状態 (batch_size, 1, hidden_size) 是输出。

  • past_key_values tuple(tuple(torch.FloatTensor)) 、可選 、在以下情况下返回 use_cache=True 已透過或何时 config.use_cache=True) — 元组 tuple(torch.FloatTensor) 长度 config.n_layers,每个元组有 2 个形状的張量 (batch_size, num_heads, sequence_length, embed_size_per_head)) 和可選的如果 config.is_encoder_decoder=True 2 个额外的形状張量 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head).

    包含预先计算的隐藏状態(自注意块中的键和值,如果 config.is_encoder_decoder=True 在交叉注意力块中)可以使用(参見 past_key_values 输入)以加快顺序解碼。

  • hidden_states tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_hidden_states=True 已透過或何时 config.output_hidden_states=True) — 元组 torch.FloatTensor (一个用于嵌入的输出,如果模型有嵌入層,+ 一个用于每層的输出)的形状 (batch_size, sequence_length, hidden_size).

    模型在每層输出處的隐藏状態加上可選的初始嵌入输出。

  • 注意 tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_attentions=True 已透過或何时 config.output_attentions=True) — 元组 torch.FloatTensor (每層一个)形状 (batch_size, num_heads, sequence_length, sequence_length).

    注意力软最大值之后的注意力權重,用于计算自我注意力中的加權平均值 頭。

  • cross_attentions tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_attentions=Trueconfig.add_cross_attention=True 已透過或何时 config.output_attentions=True) — 元组 torch.FloatTensor (每層一个)形状 (batch_size, num_heads, sequence_length, sequence_length).

    解碼器交叉注意力層的注意力權重,在注意力软最大值之后,用于计算 交叉注意力頭部的加權平均值。

BloomModel 轉發方法覆蓋 __call__ 特殊方法。

尽管需要在此函數中定義前向传递的配方,但应该调用 Module 實例之后而不是这个,因為前者负责運行预處理和后處理步驟,而 后者默默地無視他们。

例:


from从變压器 導入 自动标記器,BloomModel
 
进口 火炬

 
tokenizer = AutoTokenizer.from_pretrained( “bigscience/bloom-560m” 
模型 = BloomModel.from_pretrained( “大科学/布鲁姆-560m”) 

 
输入 = 分词器( “你好,我的狗很可愛 ”,return_tensors= “pt” 
输出 = 模型(**输入)

 
last_hidden_states = outputs.last_hidden_state 

BloomTokenizerFast

變压器。 BloomTokenizerFast

< >

vocab_file = 無 merges_file = 無 tokenizer_file = 無 unk_token = ‘<unk>’bos_token = ‘<s>’eos_token = ‘</s >’pad_token = ‘<pad>’ add_prefix_space = 假 = 假 clean_up_tokenization_spaces = False**夸格斯

参數

  • vocab_file str) — 词汇文件的路徑。
  • merges_file str) — 合并文件的路徑。
  • 错誤 str ,可選 ,默认為 "replace") — 將字節解碼為 UTF-8 时要遵循的范例。看 bytes.decode 了解更多信息。
  • unk_token str ,可選 ,默认為 <|endoftext|>) — 未知令牌。不在词汇表中的标記無法轉换為 ID,并設置為此 令牌代替。
  • bos_token str ,可選 ,默认為 <|endoftext|>) — 序列标記的開頭。
  • eos_token str ,可選 ,默认為 <|endoftext|>) — 序列标記的結束。
  • add_prefix_space bool ,可選 ,默认為 False) — 是否向输入添加初始空格。这允許像對待任何前導词一样對待前導词 其他词。(布隆标記器透過前面的空格检测單词的開頭)。
  • trim_offsets bool ,可選 ,默认為 True) — 后處理步驟是否应修剪偏移以避免包含空格。

构建一个“快速”的 Bloom 标記器(由 HuggingFace 的标記器库支持 tokenizers )。基于字節級 字節對编碼。

这个分词器經过訓练,可以將空格視為标記的一部分(有点像句子),所以一个單词会

無論是否在句子的開頭(没有空格),编碼方式都不同:


from从變压器 導入 BloomTokenizerFast

 
tokenizer = BloomTokenizerFast.from_pretrained( “bigscience/bloom” 
分词器( “你好世界”) [ “input_ids” ]
[ 59414 8876 ]

 
分词器( “你好世界”) [ “input_ids” ]
[ 86153 8876 ] 

您可以透過传递来繞过该行為 add_prefix_space=True 實例化此分词器时,但自 模型不是以这种方式预訓练的,它可能会導致性能下降。

当与 is_split_into_words=True,此分词器需要實例化 add_prefix_space=True.

这个分词器繼承自 PreTrainedTokenizerFast ,其中包含大多數主要方法。用户应 有關这些方法的详細信息,请参阅此超类。

BloomForCausalLM

變压器。 BloomForCausalLM

< >

配置 :BloomConfig

参數

  • config ( BloomConfig ) — 包含模型所有参數的模型配置类。 使用配置文件初始化不会加载与模型關联的權重,只会加载 配置。查看 from_pretrained() 加载模型權重的

Bloom 模型轉换器,頂部有一个语言建模頭(线性層,權重与输入绑定 嵌入)。

此模型繼承自 预訓练模型 。检查超类文档以了解泛型方法 库實现其所有模型(例如下载或保存,调整输入嵌入的大小等)

这个模型也是一个 PyTorch torch.nn.Module 子类。 將其用作常規的 PyTorch 模块,并参考 PyTorch 文档了解与一般用法相關的所有事项 和行為。

向前

< >

input_ids :打字。可選[火炬。LongTensor] = 無 past_key_values :打字。联合[打字。元组[键入。元组[火炬。張量,火炬。Tensor], …], NoneType] = None attention_mask : typeping.可選[火炬。張量] = 無 head_mask :打字。可選[火炬。張量] = 無 inputs_embeds :打字。可選[火炬。張量] = 無 标簽 :打字。可選[火炬。張量] = 無 use_cache :打字。可選[bool] = 無 output_attentions :键入。可選[bool] = 無 output_hidden_states :键入。可選[bool] = 無 return_dict :键入。可選[bool] = 無 **deprecated_arguments transformers.modeling_outputs。因果關系LMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)

参數

  • input_ids torch.LongTensor 形状 (batch_size, input_ids_length)) — input_ids_length = sequence_length 如果 past_key_valuesNonepast_key_values[0][0].shape[2] ( sequence_length 的输入过去的键值状態)。词汇表中输入序列标記的索引。如果 past_key_values仅使用,仅 input_ids 没有计算过去应该传递為 input_ids.

    獲取索引 可以使用自动标記器 。请参阅 PreTrainedTokenizer.encode() 和 预訓练分词器。 call () 了解详細信息。

    什么是输入 ID?

  • past_key_values Tuple[Tuple[torch.Tensor]] 长度 config.n_layers) — 包含模型计算的预先计算的隐藏状態(注意块中的键和值)(请参阅 past_key_values 输出如下)。可用于加快顺序解碼。这 input_ids 其中有 他们给予这个模型的过去不应该被当作 input_ids 因為它们已經被计算出来了。每个元素 past_key_values 是一个元组(past_key,past_value):
    • past_key: [batch_size * num_heads, head_dim, kv_length]
    • past_value: [batch_size * num_heads, kv_length, head_dim]
  • attention_mask torch.FloatTensor 形状 (batch_size, sequence_length)可選 ) — 掩碼以避免對填充令牌索引执行注意。在中選择的掩碼值 [0, 1]
    • 1 表示 未屏蔽 的令牌,
    • 0 表示屏蔽的令牌 masked

    什么是注意力面膜?

  • head_mask torch.FloatTensor 形状 (num_heads,)(num_layers, num_heads)可選 ) — 遮罩以消除自我注意模块的選定頭部。在中選择的掩碼值 [0, 1]
    • 1 表示頭部未 遮蓋
    • 0 表示頭部已 遮罩
  • inputs_embeds torch.FloatTensor 形状 (batch_size, sequence_length, hidden_size)可選 ) — (可選)而不是传递 input_ids 您可以選择直接传递嵌入式表示。这 如果您想更好地控制如何轉换,则很有用 input_ids 索引到關联的向量比 模型的内部嵌入查找矩阵。如果 past_key_values使用,可以選择仅使用最后一个 inputs_embeds 必须输入(请参阅 past_key_values)。
  • use_cache bool可選 ) — 如果設置為 Truepast_key_values 返回键值状態,可用于加快解碼速度(请参阅 past_key_values
  • output_attentions bool可選 ) — 是否返回所有注意力層的注意力張量。看 attentions 在返回下 張量以獲取更多详細信息。
  • output_hidden_states bool可選 ) — 是否返回所有圖層的隐藏状態。看 hidden_states 在返回的張量下 更多細節。
  • return_dict bool可選 ) — 是否返回 模型输出 而不是普通元组。
  • 标簽 torch.LongTensor 形状 (batch_size, sequence_length)可選 ) — 语言建模的标簽。请注意,标簽 模型内移动,即您可以設置 labels = input_ids 索引在 [-100, 0, ..., config.vocab_size] 所有标簽都設置為 -100 被忽略(屏蔽),仅针對 [0, ..., config.vocab_size]

返回

transformers.modeling_outputs。因果關系LMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs。CausalLMOutputWithCrossAttentions 或 a tuple torch.FloatTensor (如果 return_dict=False 已透過或何时 config.return_dict=False) 包括各种 元素取决于配置( BloomConfig )和输入。

  • 損失 torch.FloatTensor 形状 (1,) 、可選 、在以下情况下返回 labels 提供) — 语言建模損失(用于下一个令牌预测)。
  • 對數 torch.FloatTensor 形状 (batch_size, sequence_length, config.vocab_size)) — 语言建模頭的预测分數(SoftMax 之前每个词汇标記的分數)。
  • hidden_states tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_hidden_states=True 已透過或何时 config.output_hidden_states=True) — 元组 torch.FloatTensor (一个用于嵌入的输出,如果模型有嵌入層,+ 一个用于每層的输出)的形状 (batch_size, sequence_length, hidden_size).

    模型在每層输出處的隐藏状態加上可選的初始嵌入输出。

  • 注意 tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_attentions=True 已透過或何时 config.output_attentions=True) — 元组 torch.FloatTensor (每層一个)形状 (batch_size, num_heads, sequence_length, sequence_length).

    注意力软最大值之后的注意力權重,用于计算自我注意力中的加權平均值 頭。

  • cross_attentions tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_attentions=True 已透過或何时 config.output_attentions=True) — 元组 torch.FloatTensor (每層一个)形状 (batch_size, num_heads, sequence_length, sequence_length).

    注意力softmax之后的交叉注意力權重,用于计算 交叉注意頭。

  • past_key_values tuple(tuple(torch.FloatTensor)) 、可選 、在以下情况下返回 use_cache=True 已透過或何时 config.use_cache=True) — 元组 torch.FloatTensor 长度元组 config.n_layers,每个元组都包含快取的键, 自注意層和交叉注意層的值状態(如果在编碼器-解碼器中使用模型) 設置。仅在以下情况下相關 config.is_decoder = True.

    包含可以使用的预先计算的隐藏状態(注意块中的键和值)(请参阅 past_key_values 输入)以加快顺序解碼。

BloomForCausalLM 正向方法覆蓋了 __call__ 特殊方法。

尽管需要在此函數中定義前向传递的配方,但应该调用 Module 實例之后而不是这个,因為前者负责運行预處理和后處理步驟,而 后者默默地無視他们。

例:

进口 割炬
 
變压器 導入 AutoTokenizer,BloomForCausalLM

 
tokenizer = AutoTokenizer.from_pretrained( “bigscience/bloom-560m” 
模型 = BloomForCausalLM.from_pretrained( “大科学/布鲁姆-560m”) 

 
输入 = 分词器( “你好,我的狗很可愛 ”,return_tensors= “pt” 
输出 = 模型(**输入,标簽=输入[ “input_ids” ])
 
損失 = 输出。
 
logits = outputs.logits 

BloomForSequenceClassification

變压器。 BloomForSequenceClassification

< >

配置 :BloomConfig

参數

  • config ( BloomConfig ) — 包含模型所有参數的模型配置类。 使用配置文件初始化不会加载与模型關联的權重,只会加载 配置。查看 from_pretrained() 加载模型權重的

頂部(线性層)具有序列分类頭的布隆模型轉换器。

BloomForSequenceClassification 使用最后一个标記来进行分类,就像其他因果模型一样 (例如 GPT-1)做。

由于它對最后一个令牌进行分类,因此需要知道最后一个令牌的位置。如果 pad_token_id在配置中定義,它会在每行中查找最后一个不是填充标記的标記。如果 不 pad_token_id 定義,它只是采用批處理的每一行中的最后一个值。由于它無法猜测 在以下情况下填充标記 inputs_embeds 被传递而不是 input_ids,它做同样的事情(取最后一个值 批次的每一行)。

此模型繼承自 预訓练模型 。检查超类文档以了解泛型方法 库實现其所有模型(例如下载或保存,调整输入嵌入的大小等)

这个模型也是一个 PyTorch torch.nn.Module 子类。 將其用作常規的 PyTorch 模块,并参考 PyTorch 文档了解与一般用法相關的所有事项 和行為。

向前

< >

input_ids :打字。可選[火炬。LongTensor] = 無 past_key_values :打字。联合[打字。元组[键入。元组[火炬。張量,火炬。Tensor], …], NoneType] = None attention_mask : typeping.可選[火炬。張量] = 無 head_mask :打字。可選[火炬。張量] = 無 inputs_embeds :打字。可選[火炬。張量] = 無 标簽 :打字。可選[火炬。張量] = 無 use_cache :打字。可選[bool] = 無 output_attentions :键入。可選[bool] = 無 output_hidden_states :键入。可選[bool] = 無 return_dict :键入。可選[布尔值] = 無 **deprecated_arguments )→ transformers.modeling_outputs.SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

参數

  • input_ids torch.LongTensor 形状 (batch_size, input_ids_length)) — input_ids_length = sequence_length 如果 past_key_valuesNonepast_key_values[0][0].shape[2] ( sequence_length 的输入过去的键值状態)。词汇表中输入序列标記的索引。如果 past_key_values仅使用,仅 input_ids 没有计算过去应该传递為 input_ids.

    獲取索引 可以使用自动标記器 。请参阅 PreTrainedTokenizer.encode() 和 预訓练分词器。 call () 了解详細信息。

    什么是输入 ID?

  • past_key_values Tuple[Tuple[torch.Tensor]] 长度 config.n_layers) — 包含模型计算的预先计算的隐藏状態(注意块中的键和值)(请参阅 past_key_values 输出如下)。可用于加快顺序解碼。这 input_ids 其中有 他们给予这个模型的过去不应该被当作 input_ids 因為它们已經被计算出来了。每个元素 past_key_values 是一个元组(past_key,past_value):
    • past_key: [batch_size * num_heads, head_dim, kv_length]
    • past_value: [batch_size * num_heads, kv_length, head_dim]
  • attention_mask torch.FloatTensor 形状 (batch_size, sequence_length)可選 ) — 掩碼以避免對填充令牌索引执行注意。在中選择的掩碼值 [0, 1] 
    • 1 表示 未屏蔽 的令牌,
    • 0 表示屏蔽的令牌 masked

    什么是注意力面膜?

  • head_mask torch.FloatTensor 形状 (num_heads,)(num_layers, num_heads)可選 ) — 遮罩以消除自我注意模块的選定頭部。在中選择的掩碼值 [0, 1] 
    • 1 表示頭部未 遮蓋
    • 0 表示頭部已 遮罩
  • inputs_embeds torch.FloatTensor 形状 (batch_size, sequence_length, hidden_size)可選 ) — (可選)而不是传递 input_ids 您可以選择直接传递嵌入式表示。这 如果您想更好地控制如何轉换,则很有用 input_ids 索引到關联的向量比 模型的内部嵌入查找矩阵。如果 past_key_values使用,可以選择仅使用最后一个 inputs_embeds 必须输入(请参阅 past_key_values)。
  • use_cache bool可選 ) — 如果設置為 Truepast_key_values 返回键值状態,可用于加快解碼速度(请参阅 past_key_values)。
  • output_attentions bool可選 ) — 是否返回所有注意力層的注意力張量。看 attentions 在返回下 張量以獲取更多详細信息。
  • output_hidden_states bool可選 ) — 是否返回所有圖層的隐藏状態。看 hidden_states 在返回的張量下 更多細節。
  • return_dict bool可選 ) — 是否返回 模型输出 而不是普通元组。
  • 标簽 torch.LongTensor 形状 (batch_size,)可選 ) — 用于计算序列分类/回歸損失的标簽。索引应该在 [0, ..., config.num_labels - 1].如果 config.num_labels == 1 计算回歸損失(均方損失),如果 config.num_labels > 1 计算分类損失(交叉熵)。

返回

transformers.modeling_outputs.SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

一个 transformers.modeling_outputs.SequenceClassifierOutputWithPast 或元组 torch.FloatTensor (如果 return_dict=False 已透過或何时 config.return_dict=False) 包括各种 元素取决于配置( BloomConfig )和输入。

  • 損失 torch.FloatTensor 形状 (1,) 、可選 、在以下情况下返回 labels 提供) — 分类(如果config.num_labels==1,则回歸)損失。
  • 對數 torch.FloatTensor 形状 (batch_size, config.num_labels)) — 分类(如果config.num_labels==1,则為回歸)分數(在 SoftMax 之前)。
  • past_key_values tuple(tuple(torch.FloatTensor)) 、可選 、在以下情况下返回 use_cache=True 已透過或何时 config.use_cache=True) — 元组 tuple(torch.FloatTensor) 长度 config.n_layers,每个元组有 2 个形状的張量 (batch_size, num_heads, sequence_length, embed_size_per_head)

    包含可以使用的预先计算的隐藏状態(自注意力块中的键和值)(请参阅 past_key_values 输入)以加快顺序解碼。

  • hidden_states tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_hidden_states=True 已透過或何时 config.output_hidden_states=True) — 元组 torch.FloatTensor (一个用于嵌入的输出,如果模型有嵌入層,+ 一个用于每層的输出)的形状 (batch_size, sequence_length, hidden_size).

    模型在每層输出處的隐藏状態加上可選的初始嵌入输出。

  • 注意 tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_attentions=True 已透過或何时 config.output_attentions=True) — 元组 torch.FloatTensor (每層一个)形状 (batch_size, num_heads, sequence_length, sequence_length).

    注意力软最大值之后的注意力權重,用于计算自我注意力中的加權平均值 頭。

BloomForSequenceClassification 正向方法 __call__ 特殊方法。

尽管需要在此函數中定義前向传递的配方,但应该调用 Module 實例之后而不是这个,因為前者负责運行预處理和后處理步驟,而 后者默默地無視他们。

單标簽分类示例:

进口 割炬
 
變压器 導入 自动标記器,BloomForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained( “bigscience/bloom-560m” 
模型 = BloomForSequenceClassification.from_pretrained( “大科学/布鲁姆-560m”) 
输入 = 分词器( “你好,我的狗很可愛 ”,return_tensors= “pt” 
>>> torch.no_grad ():
 logits = model(**inputs).logits
predicted_class_id = logits.argmax().item()
# 要在 'num_labels' 类上訓练模型,可以將 'num_labels=num_labels' 传递给 '.from_pretrained(...)' 
num_labels =  len (model.config.id2label)
模型 = BloomForSequenceClassification.from_pretrained( “bigscience/bloom-560m” , num_labels=num_labels)
标簽 = torch.tensor([ 1 ])
損失 = 模型(**输入,标簽=标簽).損失 

多标簽分类示例:

进口 割炬
變压器 導入 自动标記器,BloomForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained( “bigscience/bloom-560m” 
模型 = BloomForSequenceClassification.from_pretrained( “bigscience/bloom-560m” , problem_type= “multi_label_classification”) 
输入 = 分词器( “你好,我的狗很可愛 ”,return_tensors= “pt” 
>>> torch.no_grad ():
 logits = model(**inputs).logits
predicted_class_ids = torch.arange 0, logits.shape[-(0, logits.shape[-1 ])[torch.sigmoid(logits).squeeze(dim= 0 ) >  0.5 ]
 # 要在“num_labels”类上訓练模型,可以將“num_labels=num_labels”传递给“.from_pretrained(...)' 
num_labels =  len (model.config.id2label)
模型 = BloomForSequenceClassification.from_pretrained(
    “大科学/布鲁姆-560m” , num_labels=num_labels, problem_type= “multi_label_classification” 
标簽=火炬。 总和 
 torch.nn.functional.one_hot(predicted_class_ids[ None , :].clone(), num_classes=num_labels), dim= 1 
).to(火炬。 浮点數 
損失 = 模型(**输入,标簽=标簽).損失

BloomForToken分类

變压器。 BloomForToken分类

< >

配置 :BloomConfig

参數

  • config ( BloomConfig ) — 包含模型所有参數的模型配置类。 使用配置文件初始化不会加载与模型關联的權重,只会加载 配置。查看 from_pretrained() 加载模型權重的

布隆模型,頂部有一个令牌分类頭(隐藏状態输出頂部的线性層),例如 命名實体辨識 (NER) 任務。

此模型繼承自 预訓练模型 。检查超类文档以了解泛型方法 库實现其所有模型(例如下载或保存,调整输入嵌入的大小等)

这个模型也是一个 PyTorch torch.nn.Module 子类。 將其用作常規的 PyTorch 模块,并参考 PyTorch 文档了解与一般用法相關的所有事项 和行為。

向前

< >

input_ids :打字。可選[火炬。LongTensor] = 無 past_key_values :打字。联合[打字。元组[键入。元组[火炬。張量,火炬。Tensor], …], NoneType] = None attention_mask : typeping.可選[火炬。張量] = 無 head_mask :打字。可選[火炬。張量] = 無 inputs_embeds :打字。可選[火炬。張量] = 無 标簽 :打字。可選[火炬。張量] = 無 use_cache :打字。可選[bool] = 無 output_attentions :键入。可選[bool] = 無 output_hidden_states :键入。可選[bool] = 無 return_dict :键入。可選[bool] = 無 **deprecated_arguments transformers.modeling_outputs。令牌分类器输出 或 tuple(torch.FloatTensor)

参數

  • input_ids torch.LongTensor 形状 (batch_size, input_ids_length)) — input_ids_length = sequence_length 如果 past_key_valuesNonepast_key_values[0][0].shape[2] ( sequence_length 的输入过去的键值状態)。词汇表中输入序列标記的索引。如果 past_key_values仅使用,仅 input_ids 没有计算过去应该传递為 input_ids.

    獲取索引 可以使用自动标記器 。请参阅 PreTrainedTokenizer.encode() 和 预訓练分词器。 call () 了解详細信息。

    什么是输入 ID?

  • past_key_values Tuple[Tuple[torch.Tensor]] 长度 config.n_layers) — 包含模型计算的预先计算的隐藏状態(注意块中的键和值)(请参阅 past_key_values 输出如下)。可用于加快顺序解碼。这 input_ids 其中有 他们给予这个模型的过去不应该被当作 input_ids 因為它们已經被计算出来了。每个元素 past_key_values 是一个元组(past_key,past_value):
    • past_key: [batch_size * num_heads, head_dim, kv_length]
    • past_value: [batch_size * num_heads, kv_length, head_dim]
  • attention_mask torch.FloatTensor 形状 (batch_size, sequence_length)可選 ) — 掩碼以避免對填充令牌索引执行注意。在中選择的掩碼值 [0, 1]
    • 1 表示 未屏蔽 的令牌,
    • 0 表示屏蔽的令牌 masked

    什么是注意力面膜?

  • head_mask torch.FloatTensor 形状 (num_heads,)(num_layers, num_heads)可選 ) — 遮罩以消除自我注意模块的選定頭部。在中選择的掩碼值 [0, 1]
    • 1 表示頭部未 遮蓋
    • 0 表示頭部已 遮罩
  • inputs_embeds torch.FloatTensor 形状 (batch_size, sequence_length, hidden_size)可選 ) — (可選)而不是传递 input_ids 您可以選择直接传递嵌入式表示。这 如果您想更好地控制如何轉换,则很有用 input_ids 索引到關联的向量比 模型的内部嵌入查找矩阵。如果 past_key_values使用,可以選择仅使用最后一个 inputs_embeds 必须输入(请参阅 past_key_values)。
  • use_cache bool可選 ) — 如果設置為 Truepast_key_values 返回键值状態,可用于加快解碼速度(请参阅 past_key_values)。
  • output_attentions bool可選 ) — 是否返回所有注意力層的注意力張量。看 attentions 在返回下 張量以獲取更多详細信息。
  • output_hidden_states bool可選 ) — 是否返回所有圖層的隐藏状態。看 hidden_states 在返回的張量下 更多細節。
  • return_dict bool可選 ) — 是否返回 模型输出 而不是普通元组。
  • 标簽 torch.LongTensor 形状 (batch_size,)可選 ) — 用于计算序列分类/回歸損失的标簽。索引应该在 [0, ..., config.num_labels - 1].如果 config.num_labels == 1 计算回歸損失(均方損失),如果 config.num_labels > 1 计算分类損失(交叉熵)。

返回

transformers.modeling_outputs。令牌分类器输出 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs。令牌分类器输出 或元组 torch.FloatTensor (如果 return_dict=False 已透過或何时 config.return_dict=False) 包括各种 元素取决于配置( BloomConfig )和输入。

  • 損失 torch.FloatTensor 形状 (1,) 、可選 、在以下情况下返回 labels 提供)— 分类丢失。
  • 對數 torch.FloatTensor 形状 (batch_size, sequence_length, config.num_labels)) — 分类分數(在 SoftMax 之前)。
  • hidden_states tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_hidden_states=True 已透過或何时 config.output_hidden_states=True) — 元组 torch.FloatTensor (一个用于嵌入的输出,如果模型有嵌入層,+ 一个用于每層的输出)的形状 (batch_size, sequence_length, hidden_size).

    模型在每層输出處的隐藏状態加上可選的初始嵌入输出。

  • 注意 tuple(torch.FloatTensor) 、可選 、在以下情况下返回 output_attentions=True 已透過或何时 config.output_attentions=True) — 元组 torch.FloatTensor (每層一个)形状 (batch_size, num_heads, sequence_length, sequence_length).

    注意力软最大值之后的注意力權重,用于计算自我注意力中的加權平均值 頭。

 

BloomForTokenClassification 轉發方法覆蓋了 __call__ 特殊方法。

尽管需要在此函數中定義前向传递的配方,但应该调用 Module 實例之后而不是这个,因為前者负责運行预處理和后處理步驟,而 后者默默地無視他们。

例:

from从變压器 導入 自动标記器,BloomForTokenClassification
 
进口 火炬

tokenizer = AutoTokenizer.from_pretrained( “bigscience/bloom-560m” 
模型 = BloomForTokenClassification.from_pretrained( “大科学/布鲁姆-560m”) 
输入 = 分词器(
    “HuggingFace是一家位于巴黎和紐約的公司 ”,add_special_tokens =False ,return_tensors= “pt” 
torch.no_grad ():
 logits = model(**inputs).logits

 
predicted_token_class_ids = logits.argmax(- 1 
 # 请注意,标記是分类的,而不是输入 
# 预测的标記类可能比單词多。 
# 多个标記类可能占同一个單词>>> 
predicted_tokens_classes = [model.config.id2label[t.item() ] for  t  in in  predicted_token_class_ids[ 0 ]]
标簽 = predicted_token_class_ids
 
損失 = 模型(**输入,标簽=标簽).損失 

綻放問答

變压器。 綻放問答

< >

配置

参數

  • config ( BloomConfig ) — 包含模型所有参數的模型配置类。 使用配置文件初始化不会加载与模型關联的權重,只会加载 配置。查看 from_pretrained() 加载模型權重的

BLOOM 型号變压器頂部帶有跨度分类頭,用于抽取式問答任務,例如 SQuAD(隐藏状態输出之上的线性層进行计算 span start logitsspan end logits)。

此模型繼承自 预訓练模型 。检查超类文档以了解泛型方法 库實现其所有模型(例如下载或保存,调整输入嵌入的大小等)

这个模型也是一个 PyTorch torch.nn.Module 子类。 將其用作常規的 PyTorch 模块,并参考 PyTorch 文档了解与一般用法相關的所有事项 和行為。

向前

< >

input_ids :打字。可選[火炬。LongTensor] = 無 attention_mask :打字。可選[火炬。FloatTensor] = 無 position_ids :打字。可選[火炬。LongTensor] = 無 head_mask :打字。可選[火炬。FloatTensor] = None inputs_embeds :打字。可選[火炬。FloatTensor] = None start_positions :打字。可選[火炬。LongTensor] = 無 end_positions :打字。可選[火炬。LongTensor] = 無 output_attentions :打字。可選[bool] = 無 output_hidden_states :键入。可選[bool] = 無 return_dict :键入。可選[布尔值] = 無

参數

  • input_ids torch.LongTensor 形状 (batch_size, input_ids_length)) — input_ids_length = sequence_length 如果 past_key_valuesNonepast_key_values[0][0].shape[2] ( sequence_length 的输入过去的键值状態)。词汇表中输入序列标記的索引。如果 past_key_values仅使用,仅 input_ids 没有计算过去应该传递為 input_ids.

    獲取索引 可以使用自动标記器 。请参阅 PreTrainedTokenizer.encode() 和 预訓练分词器。 call () 了解详細信息。

    什么是输入 ID?

  • past_key_values Tuple[Tuple[torch.Tensor]] 长度 config.n_layers) — 包含模型计算的预先计算的隐藏状態(注意块中的键和值)(请参阅 past_key_values 输出如下)。可用于加快顺序解碼。这 input_ids 其中有 他们给予这个模型的过去不应该被当作 input_ids 因為它们已經被计算出来了。每个元素 past_key_values 是一个元组(past_key,past_value):
    • past_key: [batch_size * num_heads, head_dim, kv_length]
    • past_value: [batch_size * num_heads, kv_length, head_dim]
  • attention_mask torch.FloatTensor 形状 (batch_size, sequence_length)可選 ) — 掩碼以避免對填充令牌索引执行注意。在中選择的掩碼值 [0, 1]
    • 1 表示 未屏蔽 的令牌,
    • 0 表示屏蔽的令牌 masked

    什么是注意力面膜?

  • head_mask torch.FloatTensor 形状 (num_heads,)(num_layers, num_heads)可選 ) — 遮罩以消除自我注意模块的選定頭部。在中選择的掩碼值 [0, 1]
    • 1 表示頭部未 遮蓋
    • 0 表示頭部已 遮罩
  • inputs_embeds torch.FloatTensor 形状 (batch_size, sequence_length, hidden_size)可選 ) — (可選)而不是传递 input_ids 您可以選择直接传递嵌入式表示。这 如果您想更好地控制如何轉换,则很有用 input_ids 索引到關联的向量比 模型的内部嵌入查找矩阵。如果 past_key_values使用,可以選择仅使用最后一个 inputs_embeds 必须输入(请参阅 past_key_values)。
  • use_cache bool可選 ) — 如果設置為 Truepast_key_values 返回键值状態,可用于加快解碼速度(请参阅 past_key_values)。
  • output_attentions bool可選 ) — 是否返回所有注意力層的注意力張量。看 attentions 在返回下 張量以獲取更多详細信息。
  • output_hidden_states bool可選 ) — 是否返回所有圖層的隐藏状態。看 hidden_states 在返回的張量下 更多細節。
  • return_dict bool可選 ) — 是否返回 模型输出 而不是普通元组。
  • start_positions torch.LongTensor 形状 (batch_size,)可選 ) — 标簽用于标記跨度開始的位置(索引),用于计算令牌分类損失。 位置被夹紧到序列的长度( sequence_length)。序列外的位置 在计算損失时不考慮在内。
  • end_positions torch.LongTensor 形状 (batch_size,)可選 ) — 标簽用于标記跨度末端的位置(索引),用于计算令牌分类損失。 位置被夹紧到序列的长度( sequence_length)。序列外的位置 在计算損失时不考慮在内。

將 BloomForQuestionAnswer 轉發方法 __call__ 特殊方法。

尽管需要在此函數中定義前向传递的配方,但应该调用 Module 實例之后而不是这个,因為前者负责運行预處理和后處理步驟,而 后者默默地無視他们。

数据评估

BLOOM浏览人数已经达到441,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:BLOOM的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要,一些确切的数据则需要找BLOOM的站长进行洽谈提供。如该站的IP、PV、跳出率等!

关于BLOOM特别声明

本站ai工具百寶箱提供的BLOOM都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由ai工具百寶箱实际控制,在2024年12月9日 上午12:11收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,ai工具百寶箱不承担任何责任。

相关导航

暂无评论

暂无评论...