最近要基于Transformers中的huggingface写一篇论文,因此需要学习相关知识,故此记录一下自己学习的内容,分享自己学习到的知识,与大家一起交流。在介绍Transformer的Huggingface之前,先简单的介绍一些基本的概念,关于Transformer的基础模型以及代码的学习,大家可以在网上进行查找学习。在这里推荐哈佛大学提出的可解释的Transformer.这里有相关的参考链接。
1.最详细的Transformer代码注释! 哈佛这篇教程带你手把手实现
2.【Transformer】入门篇-哈佛Harvard NLP的原作者在2018年初以逐行实现的形式呈现了论文The Annotated Transformer
一.关于自然语言处理的介绍
1.常见的自然语言处理任务
0.文本分类(text classfication):对给定的文本按照要求进行分类。
1.情感分析(sentiment-analysis):对给定的文本分析其情感极性。
2.文本生成(text-generation): 根据给定的相应的文本进行特定条件的生成。
3.命名实体识别(ner):用来研究在句子中的实体。
4.共指消解(Coreference Resolution):实体共指消解是识别不同关联数据源中相同实体的不同标识符,主要解决三元组中主语之间的冲突问题。
6.阅读理解 (question-answering):给定上下文与问题,从上下文中抽取答案。
7.掩码填充 (fill-mask): 填充给定文本中的掩码词。
8.文本摘要(summarization):根据文本的提示生成一段长文本的摘要。
9.机器翻译 (translation): 将文本翻译成另一种语言。
10.特征提取(feature-extraction):生成给定文本的张量表示。
11.对话机器人 (conversional) : 根据用户输入文本,产生回应,与用户对话。
2.自然语言处理的几个阶段
该段主要讲解一些关于自然语言处理阶段研究的历程。
自然原因处理的研究可以追溯到二十世纪60年代左右,其中自然语言处理的顶会ACL是在1960以后开始的。
一开始对文本的研究,还是基于统计学知识,NLP后来经过不断的发展,变得越来越成熟。具体如下:
第一阶段:统计模型 +数据(特征工程)
线性回归、逻辑回归、决策树、支持向量机(SVM)、隐马尔可夫(HMM)、条件随机场(CRF)、TF-IDF、词袋模型(BOW)等。
第二阶段:神经网络+数据
Linear、CNN、RNN、GRU、LSTM、Transformer、Word2vec、Glove等
第三阶段:神经网络 +预训练模型 + (少量)数据
GPT、GPT2、BERT、ROBERTa、ALBERT、BART、T5、ProphetNet、ERICA等。
第四阶段:神经网络+更大的预训练模型+Prompt
ChatGLM、ChatGPT、Bloom、LLaMA、Alpaca、Vicuna、MOSS、文心一言、通义千问、星火。
3.简单介绍HuggingFace
HuggingFace平台继承了关于Transformer相关变体的几乎所有模型。同时提供了相关数据集以及评价指标。成为目前最热使用的自然语言处理工具包。可以说是目前最流行的一个平台,想要学习大模型,就必须了解Huggingface。
Huggingface不局限于自然语言处理模型,还包括图像、音频以及多模态的模型,同时支持用户自行传,社区完善,文档全面三两行代码便可快速实现模型训练推理,上手简单。
4.Huggingface的基础使用
Transformers及相关库。具体可以参考:https://huggingface.co/docs
Transformers: 核心库,模型加载、模型训练、流水线等。
Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换。
Datasets:数据集库,提供了数据集的加载、处理等方法。
Evaluate: 评估函数,提供各种评价指标的计算函数。
PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量撬动大模型。
Accelerate: 分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案。
Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等。
Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统。
5.Transformers环境的安装
关于环境的安装是最复杂的一步,也是最基础的一步,首先毫无疑问,必须安装python,这里推荐大家可以安装Anaconda,关于anaconda的安装这里不做过多解释,仅仅将自己在安装过程中存在的困难说一下,详细的安装教程可以在网络上查到。
5.1 anaconda安装
anaconda可以在下边的清华镜像源的网址进行下载,速度很快。一定注意自己的NVidia版本
清华镜像源—anaconda镜像
当然这个镜像源可以下载很多所需的镜像包,大家可以了解一下,尤其需要发表ScI论文的,多数可能需要使用Latex进行排版,texlive也可以在这里下载。例如:textlive下载镜像源
安装完成anaconda以后需要配置一下Pypi,根据自己的需求进行填写:
5.2 pytorch安装
官方地址: https://pytorch.org/
尽量使用pip安装,conda安装会出现很多问题,如果实在没有合适的编译好的系统版本的安装包,再使用conda进行安装,不要来回混滑。
30XX系列显卡、40XX系列显卡,要安装cu11以上的版本,否则无法运行,之前自己的运行环境的过程中存在这样的问题。
CUDA是否要安装
如果只需要训练、简单推理,则无需单独安装CUDA,直接安装pytorch
如果有部署需求,例如导出TensorRT模型,则需要进行CUDA安装。
5.3 vscode、Pycharm、Jupyter等编译器
-
vscode的安装
VS Code 安装
官方地址: https://code.visualstudio.com/download
插件安装
- Python(代码编写)
- remote ssh (连接服务器)
- Chinese Language Pack (简体中文包)
- 终端设置(非常重要!非常重要!非常重要!)
- 选择默认配置文件:cmd.exe
相关安装的具体流程在百度上可以查到,当然也可以私信我,看到后会及时回复!
2.Jupyter的安装
Jupyter的简单介绍:Jupyter是一种开源的交互式计算环境,可以支持多种编程语言,如Python、R、Julia等。它提供了一个网页应用程序,用户可以在其中创建和共享文档,包含可运行的代码、可视化结果、解释性文本和多媒体内容。Jupyter的核心组件是Notebook,它将代码、文本和富媒体内容组合在一个可编辑的文档中。通过Notebook,用户可以按照顺序编写和执行代码块,并即时查看代码的输出结果。这种交互式的编程方式使得数据分析、机器学习、科学计算等任务更加方便和直观。
Jupyter具有以下特点:
交互性:用户可以迭代地编写和执行代码,并实时查看结果,方便进行调试和探索。
可视化展示:Jupyter支持将代码运行结果以图表、图像、表格等形式进行可视化展示,有助于数据分析和结果展示。
文档编写:Jupyter Notebook不仅可以包含代码,还可以包含富文本内容,如Markdown格式的文字、Latex公式、HTML标签等,可以编写完整的文档说明和解释。
共享和协作:Jupyter Notebook可以保存为可分享的文件,方便与他人共享和协同编辑。可以在GitHub上共享Notebook,并通过nbviewer等工具在线展示Notebook的内容。
总之,Jupyter提供了一个灵活、直观的计算环境,使得数据分析、可视化和科学计算等任务更加便捷和高效。它广泛应用于学术研究、数据科学、教育等领域。
相关jupyter常用到的快捷键如下:
命令模式(按 Esc 进入):
Enter:进入编辑模式
Shift + Enter:运行当前单元格并选中下一个单元格
Ctrl + Enter:运行当前单元格
Y:将单元格切换为代码模式
M:将单元格切换为 Markdown 模式
R:将单元格切换为原始文本模式
A:在当前单元格上方插入新的单元格
B:在当前单元格下方插入新的单元格
X:剪切当前选中的单元格
C:复制当前选中的单元格
V:粘贴剪贴板中的单元格
D + D(按两次 D):删除当前选中的单元格
Z:撤销删除的最后一个单元格
H:显示全部快捷键帮助文档
编辑模式(按 Enter 进入):
Esc:退出编辑模式进入命令模式
Tab:代码补全或缩进
Shift + Tab:显示函数或方法的帮助信息
Ctrl + ]:缩进所选行或当前行
Ctrl + [:反缩进所选行或当前行
Ctrl + /:注释或取消注释所选行或当前行
Ctrl + Z:撤销
Ctrl + Shift + Z:重做
Ctrl + S:保存当前 Notebook
这些是一些常用的快捷键,可以有效提高在 Jupyter Notebook 中的操作效率。你也可以通过点击工具栏上的相应图标来执行相同的操作。
关于Jupyter相关远程连接的配置如下:
在使用服务器运行jupyter的时候出现了大量的问题,因此为了防止以后遗忘,再次做了 一个简单的梳理,方便大家查看,并方便自己后期的查看和使用。
- 首先,在远程或者本地运行jupyter的时候,会出现密码问题,如何解决密码问题,在参考一下网站的链接后,自己对其进行总结。
首先要生成一个配置文件,一般使用完成这个命令,配置文件会出现在虚拟机的用户目录下的.jupyter
1.1 生成配置文件:jupyter notebook --generate-config
1.2. 生成密码:进入环境配置,运行python, 输入- 接着
2.1、from notebook.auth import passwd
2.2、passwd()然后会提示输入两次密码(这个密码也要记住,一会在客户端访问时要用),这个密码在之后在客户端远程访问时要使用。 此时会生成一个密钥,如’argon2: a r g o n 2 i d argon2id argon2idv=19 m = 10240 , t = 10 , p = 8 m=10240,t=10,p=8 m=10240,t=10,p=8t6MW1ELggy9SwTnIfYELyAKaTeX parse error: Expected 'EOF', got '#' at position 156: …10.186.253.23' #̲设置访问notebook的ip…argon2id v = 19 v=19 v=19m=10240,t=10,p=8 O 7 a a X / z / r G c k S h y X c C E e / A O7aaX/z/rGckShyXcCEe/A O7aaX/z/rGckShyXcCEe/AwThQIIDac18qnYk7sbnPlW7f+AaazZNoKFg8V3TDpZo’ #填写刚刚复制的密钥
3.3 c.NotebookApp.allow_remote_access = True
3.4 c.NotebookApp.open_browser = False # 禁止notebook启动时自动打开浏览器
3.5 c.NotebookApp.port =8889 #指定访问的端口,默认是8888。
保存该文件,如果保存时报错,如:“No address associated with hostname”,因为某的系统是不接受ip设置为的,所以我们把改成0.0.0.0,也可以代表允许所有ip访问。
3.Pycharm的安装
可以在官方网站(官网)下载最新版本,然后网上收缩最新的破解教程即可。由于相对复杂,这里提供几个破解的方网站参考,由于Pycharm在不断的更新,可能网址的方法会出现问题,请大家见解。
1.https://baijiahao.baidu.com/s?id=1768738333862295003&wfr=spider&for=pc
2.https://www.bilibili.com/read/cv24773937
3.https://mdnice.com/writing/43c16e2f1dcf4ed8827ae7a2acc61f6b
4.https://www.cnblogs.com/chenxiaomeng/p/17512181.html
等等
5.4 Transformers的安装
安装命令:想要使用Transformer的库函数,就必须安装相应的功能。
pip install transformers datasets evaluate peft accelerate gradio optimum sentencepiece jupyterlab scikit-learn pandas matplotlib tensorboard nltk rouge
关于在下载nltk中的数据时候会出现很多问题,需要科学上网哦!为了方便大家,后续我会上传到自己网盘,分享给大家,大家有什么问题。可以一起交流。
对了,这里说明一下,大家在下载时候,可以使用一个命令,可以加快下载的速度。
pip下载速度过慢的原因就是 pip 默认使用的是国外的源,那么我们只要把国外的源换成国内的,下载速度就可以提升很多了。
**
下载时加入参数 -i [镜像源地址]
这里举个例子:
pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
-i https://pypi.tuna.tsinghua.edu.cn/simple
国内的一些镜像源
豆瓣 http://pypi.douban.com/simple
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
中国科学院 http://pypi.mirrors.opencas.cn/simple/
Python官方 https://pypi.python.org/simple/
**
或者设置源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set install.trusted-host mirrors.aliyun.com