当前位置: 首页 > news >正文

大模型笔记1: Longformer环境配置

论文:

https://arxiv.org/abs/2004.05150

目录

库安装

LongformerForQuestionAnswering


库安装

首先保证电脑上配置了git.

git环境配置:

https://blog.csdn.net/Andone_hsx/article/details/87937329

3.1、找到git安装路径中bin的位置,如:D:\Program Files\Git\bin

        找到git安装路径中git-core的位置,如:D:\Program Files\Git\libexec\git-core;

        注:"D:\Program Files\Git\"是安装路径,可能与你的安装路径不一样,要按照你自己的路径替换"D:\Program Files\Git\"

        3.2、右键“计算机”->“属性”->“高级系统设置”->“环境变量”->在下方的“系统变量”中找到“path”->选中“path”并选择“编辑”->将            3.1中找到的bin和git-core路径复制到其中->保存并退出

        注:“path”中,每个路径之间要以英文输入状态下的分号——“;”作为间隔

D:\Program Files\Git\mingw64\bin

D:\Program Files\Git\mingw64\libexec\git-core

安装环境

conda create --name longformer python=3.7

y

conda activate longformer

conda install cudatoolkit=10.0

y

pip install git+https://github.com/allenai/longformer.git

报错:

ERROR: Could not find a version that satisfies the requirement pandas>=0.20.3 (from test-tube) (from versions: none)

ERROR: No matching distribution found for pandas>=0.20.3

No module named 'pandas'

Install装不上, 在anaconda navigator装的

更换清华源后似乎可以继续运行了, 参考:

https://www.cnblogs.com/raiuny/p/15950043.html

conda config --add channels Index of /anaconda/cloud/pytorch/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

conda config --set show_channel_urls yes

conda config --set auto_activate_base false

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

好几次报错128, 也许是RP问题, 总之重新运行几次后安装成功了.

环境安装成功会显示successful.

接着跑tests文件夹的test_readme.py, 注意需要下载longformer-base-4096.tar.gz

这个文件我放在项目目录下的/tmp文件夹和tests/tmp都无法读取, 因此修改了self.model_dir路径为绝对路径, 并注释下载解压代码, 就可以运行了:

LongformerForQuestionAnswering

1)test_readme中默认使用的Longformer模型输出是embedding, 缺少LMHead把embedding映射成tokenid或logits等, 无法输出文字. 如果使用Longformer完成最终任务, 需要自己写映射并训练.

2)文档其它longformer模型. 大部分为分类模型. 其中LongformerForQuestionAnswering符合extractive summarization

3)coding过程中可以参考huggingface上的文档例子从transformers库里面调用其它种类的longformer

from transformers import AutoTokenizer, LongformerForQuestionAnswering

import torch

tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-large-4096-finetuned-triviaqa")

model = LongformerForQuestionAnswering.from_pretrained("allenai/longformer-large-4096-finetuned-triviaqa")

question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

encoding = tokenizer(question, text, return_tensors="pt")

input_ids = encoding["input_ids"]

# default is local attention everywhere

# the forward method will automatically set global attention on question tokens

attention_mask = encoding["attention_mask"]

outputs = model(input_ids, attention_mask=attention_mask)

start_logits = outputs.start_logits

end_logits = outputs.end_logits

all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())

answer_tokens = all_tokens[torch.argmax(start_logits) : torch.argmax(end_logits) + 1]

answer = tokenizer.decode(

    tokenizer.convert_tokens_to_ids(answer_tokens)

)  # remove space prepending space token

如果加载其它qa模型(longformer_base_4096_QA_SQUAD)不配套会报错:

Some weights of the model checkpoint at tmp/longformer_base_4096_QA_SQUAD were not used when initializing LongformerForQuestionAnswering: ['classifier.dense.weight', 'classifier.dense.bias', 'classifier.out_proj.weight', 'classifier.out_proj.bias']

按照示例代码加载longformer-large-4096-finetuned-triviaqa后报错

start_logits = outputs.start_logits

AttributeError: 'tuple' object has no attribute 'start_logits'

这个报错的意思是返回值不是对象而是元组, 因此判断如果是元组, 则手动解析

if isinstance(outputs, tuple):

    loss,start_logits, end_logits,hidden_states,attentions = outputs

else:

    start_logits = outputs.start_logits

    end_logits = outputs.end_logits

库中LongformerForQuestionAnswering类代码有两处可能返回

1.

output = (start_logits, end_logits) + outputs[2:]

2.

return SequenceClassifierOutput(

            loss=loss,

            logits=logits,

            hidden_states=outputs.hidden_states,

            attentions=outputs.attentions,

        )

http://www.lryc.cn/news/390569.html

相关文章:

  • 类和对象(提高)
  • 免费最好用的证件照制作软件,一键换底+老照片修复+图片动漫化,吊打付费!
  • antfu/ni 在 Windows 下的安装
  • Linux 生产消费者模型
  • 深入浅出:MongoDB中的背景创建索引
  • Spring事务十种失效场景
  • JELR-630HS漏电继电器 30-500mA 导轨安装 约瑟JOSEF
  • 如何实现一个简单的链表或栈结构
  • 抖音外卖服务商入驻流程及费用分别是什么?入驻官方平台的难度大吗?
  • “小红书、B站崩了”,背后的阿里云怎么了?
  • nginx的配置文件
  • 艾滋病隐球菌病的病原学诊断方法包括?
  • jQuery Tooltip 插件使用教程
  • 访问者模式在金融业务中的应用及其框架实现
  • .npy格式图像如何进行深度学习模型训练处理,亲测可行
  • XFeat快速图像特征匹配算法
  • 普元EOS学习笔记-低开实现图书的增删改查
  • 动态住宅代理IP详细解析
  • 等保2.0 实施方案之信息软件验证要求
  • 【LeetCode的使用方法】
  • 【SGX系列教程】(二)第一个 SGX 程序: HelloWorld,linux下运行
  • 网页报错dns_probe_possible 怎么办?——错误代码有效修复
  • Vue.js 中属性绑定的详细解析:冒号 `:` 和非冒号的区别
  • 使用Java实现智能物流管理系统
  • 深圳技术大学oj C : 生成r子集
  • 不同操作系统下的换行符
  • Transformation(转换)开发-switch/case组件
  • Android Gradle 开发与应用 (二): Android 项目结构与构建配置
  • 02:vim的使用和权限管控
  • GNeRF代码复现