标签: huggingface-transformers

无法从“flash_attn”导入名称“flash_attn_func”

尝试加载 llama2 模型:

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map=device_map
)
Run Code Online (Sandbox Code Playgroud)

使用这些 bnb_config:

BitsAndBytesConfig {
  "bnb_4bit_compute_dtype": "bfloat16",
  "bnb_4bit_quant_type": "nf4",
  "bnb_4bit_use_double_quant": true,
  "llm_int8_enable_fp32_cpu_offload": false,
  "llm_int8_has_fp16_weight": false,
  "llm_int8_skip_modules": null,
  "llm_int8_threshold": 6.0,
  "load_in_4bit": true,
  "load_in_8bit": false,
  "quant_method": "bitsandbytes"
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

RuntimeError: Failed to import transformers.models.llama.modeling_llama because of the following error (look up to see its traceback):
cannot import name 'flash_attn_func' from 'flash_attn' (/opt/conda/lib/python3.10/site-packages/flash_attn/__init__.py)
Run Code Online (Sandbox Code Playgroud)

任何帮助都会有所帮助。

pytorch huggingface-transformers llama

3
推荐指数
1
解决办法
2269
查看次数

使用领域文本预训练 BERT/RoBERTa 语言模型,预计需要多长时间?哪个更快?

我想使用域语料库(情感相关文本)预训练 BERT 和 RoBERTa MLM。使用50k~100k字需要多长时间。由于 RoBERTa 没有接受过预测下一个句子目标的训练,一个训练目标比 BERT 少,并且具有更大的小批量和学习率,我认为 RoBERTa 会快得多?

language-model bert-language-model huggingface-transformers

2
推荐指数
1
解决办法
1028
查看次数

如何使用huggingface T5模型测试翻译任务?

我看到存在 T5model 的两个配置 - T5ModelTFT5WithLMHeadModel。我想测试这个翻译任务(例如 en-de),因为它们在 google 的原始 repo 中显示。有没有办法可以使用这个模型从拥抱脸来测试翻译任务。我在文档方面没有看到任何与此相关的示例,并且想知道如何提供输入并获得结果。

任何帮助表示赞赏

python-3.x tensorflow2.0 huggingface-transformers

2
推荐指数
1
解决办法
2511
查看次数

Hugging Face BertForSequenceClassification 中有 6 个标签,而不是 2 个

我只是想知道是否可以将 HuggingFace BertForSequenceClassification模型扩展到 2 个以上的标签。文档说,我们可以传递位置参数,但似乎“标签”不起作用。有人有想法吗?

模型分配

labels = th.tensor([0,0,0,0,0,0], dtype=th.long).unsqueeze(0)
print(labels.shape)
modelBERTClass = transformers.BertForSequenceClassification.from_pretrained(
    'bert-base-uncased', 
    labels=labels
    )

l = [module for module in modelBERTClass.modules()]
l
Run Code Online (Sandbox Code Playgroud)

控制台输出

torch.Size([1, 6])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-122-fea9a36402a6> in <module>()
      3 modelBERTClass = transformers.BertForSequenceClassification.from_pretrained(
      4     'bert-base-uncased',
----> 5     labels=labels
      6     )
      7 

/usr/local/lib/python3.6/dist-packages/transformers/modeling_utils.py in from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)
    653 
    654         # Instantiate model.
--> 655         model = cls(config, *model_args, **model_kwargs)
    656 
    657         if state_dict is None and not from_tf:

TypeError: __init__() …
Run Code Online (Sandbox Code Playgroud)

python transformer-model bert-language-model huggingface-transformers

2
推荐指数
1
解决办法
6525
查看次数

pytorch 或 Huggingface/transformer 标签的代码中的何处被“重命名”为标签?

我的问题涉及这个例子,可以在伟大的huggingface/transformers库中找到。

我正在使用库创建者提供的笔记本作为我的管道的起点。它提出了一个在 Glue 数据集上微调 BERT 进行句子分类的流程。

当进入代码时,我注意到一个非常奇怪的事情,我无法解释。

InputFeatures在示例中,输入数据作为类的实例从此处引入模型:

该类有4个属性,包括label属性:

class InputFeatures:
    ...
    input_ids: List[int]
    attention_mask: Optional[List[int]] = None
    token_type_ids: Optional[List[int]] = None
    label: Optional[Union[int, float]] = None
Run Code Online (Sandbox Code Playgroud)

随后将其作为输入字典传递给forward()模型方法。这是由Trainer类完成的,例如这里的第 573-576 行:

    def _training_step(
        self, model: nn.Module, inputs: Dict[str, torch.Tensor], optimizer: torch.optim.Optimizer
    ) -> float:
        model.train()
        for k, v in inputs.items():
            inputs[k] = v.to(self.args.device)

        outputs = model(**inputs)  
Run Code Online (Sandbox Code Playgroud)

但是,该forward()方法需要标签(注意复数形式)输入参数(取自此处):

    def forward(
        self,
        input_ids=None,
        attention_mask=None, …
Run Code Online (Sandbox Code Playgroud)

python pytorch huggingface-transformers

2
推荐指数
1
解决办法
1665
查看次数

使用 Hugging Face Transformers 库如何可以 POS_TAG 法语文本

我正在尝试使用 Hugging Face Transformers 库来 POS_TAG 法语。在英语中,我可以通过如下句子来做到这一点:

天气真是太好了。那么让我们去散步吧。

结果是:

    token   feature
0   The     DET
1   weather NOUN
2   is      AUX
3   really  ADV
4   great   ADJ
5   .       PUNCT
6   So      ADV
7   let     VERB
8   us      PRON
9   go      VERB
10  for     ADP
11  a       DET
12  walk    NOUN
13  .       PUNCT
Run Code Online (Sandbox Code Playgroud)

有谁知道法语如何实现类似的目标吗?

这是我在 Jupyter 笔记本中用于英文版本的代码:

!git clone https://github.com/bhoov/spacyface.git
!python -m spacy download en_core_web_sm

from transformers import pipeline
import numpy as np
import pandas as pd

nlp = pipeline('feature-extraction') …
Run Code Online (Sandbox Code Playgroud)

python nlp bert-language-model huggingface-transformers

2
推荐指数
1
解决办法
4398
查看次数

将多个句子传递给 BERT?

我有一个包含段落的数据集,我需要将其分为两类。这些段落通常有 3-5 句话长。其中绝大多数的长度不到 500 字。我想利用BERT来解决这个问题。

我想知道我应该如何使用 BERT 来生成这些段落的向量表示,尤其是将整个段落传递给 BERT 是否可以?

此处此处对相关问题进行了翔实的讨论。这些讨论集中在如何使用 BERT 来表示整个文档。在我的例子中,段落并没有那么长,确实可以在不超过 512 的最大长度的情况下传递给 BERT。但是,BERT 是在句子上进行训练的。句子是相对独立的意义单位。我想知道将多个句子输入 BERT 是否与模型的设计目的没有根本冲突(尽管这似乎是定期进行的)。

nlp text-classification bert-language-model huggingface-transformers

2
推荐指数
1
解决办法
1152
查看次数

运行时错误:张量 a (4000) 的大小必须与非单维 1 处的张量 b (512) 的大小匹配

我正在尝试为文档分类构建模型。我正在BERTPyTorch.

我得到了带有以下代码的 bert 模型。

bert = AutoModel.from_pretrained('bert-base-uncased')
Run Code Online (Sandbox Code Playgroud)

这是训练的代码。

for epoch in range(epochs):
 
    print('\n Epoch {:} / {:}'.format(epoch + 1, epochs))

    #train model
    train_loss, _ = modhelper.train(proc.train_dataloader)

    #evaluate model
    valid_loss, _ = modhelper.evaluate()

    #save the best model
    if valid_loss < best_valid_loss:
        best_valid_loss = valid_loss
        torch.save(modhelper.model.state_dict(), 'saved_weights.pt')

    # append training and validation loss
    train_losses.append(train_loss)
    valid_losses.append(valid_loss)

    print(f'\nTraining Loss: {train_loss:.3f}')
    print(f'Validation Loss: {valid_loss:.3f}')
Run Code Online (Sandbox Code Playgroud)

这是我的 train 方法,可通过 object 访问modhelper

def train(self, train_dataloader):
    self.model.train()
    total_loss, total_accuracy = 0, 0
    
    # …
Run Code Online (Sandbox Code Playgroud)

python deep-learning pytorch bert-language-model huggingface-transformers

2
推荐指数
1
解决办法
2713
查看次数

如何在 Transformers 库中截断 Bert 分词器

我正在使用 Scibert 预训练模型来获取各种文本的嵌入。代码如下:

from transformers import *

tokenizer = AutoTokenizer.from_pretrained('allenai/scibert_scivocab_uncased', model_max_length=512, truncation=True)
model = AutoModel.from_pretrained('allenai/scibert_scivocab_uncased')
Run Code Online (Sandbox Code Playgroud)

我已将最大长度和截断参数添加到分词器,但不幸的是,它们不会截断结果。如果我通过分词器运行更长的文本:

inputs = tokenizer("""long text""")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

令牌索引序列长度长于此模型指定的最大序列长度 (605 > 512)。通过模型运行此序列将导致索引错误

现在很明显,由于张量序列太长,我无法在模型中运行它。截断输入以适应最大序列长度 512 的最简单方法是什么?

python nlp huggingface-transformers

2
推荐指数
1
解决办法
1351
查看次数

XLNetTokenizer 需要 SentencePiece 库,但在您的环境中找不到

我正在尝试在 Google Collaboratory 上实施 XL​​NET。但我得到以下问题。

ImportError: 
XLNetTokenizer requires the SentencePiece library but it was not found in your environment. Checkout the instructions on the
installation page of its repo: https://github.com/google/sentencepiece#installation and follow the ones
that match your environment.
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下步骤:

!pip install -U transformers
!pip install sentencepiece

from transformers import XLNetTokenizer
tokenizer = XLNetTokenizer.from_pretrained('xlnet-base-cased-spiece.model')
Run Code Online (Sandbox Code Playgroud)

提前谢谢你的帮助。

transformer-model google-colaboratory huggingface-transformers huggingface-tokenizers

2
推荐指数
1
解决办法
1520
查看次数