记录这个月的学习内容
看论文
搭环境
跑代码之前,我们都是需要gpu的,会在服务器中nvidia-smi,检查gpu可用信息,也会搜索如何查看cuda版本用nvcc -V,或者安装pytorch,使用import torch; torch.version.cuda进行查看。可是这几个命令用了以后,显示的是完全不一样的cuda信息。
搞清楚CUDA显示不同版本问题
nvidia-smi 不可查询CUDA版本。显示的结果中,Driver Version是实际的版本号,但CUDA Version不是实际的版本号,而是当前Driver支持的最高CUDA版本。
nvcc是CUDA Runtime的编译器。输出的版本号就是机器上CUDA Runtime的版本号。
torch.version.cuda 它的输出不是当前CUDA的版本号,而是当前torch支持的最高CUDA版本。
学习知识
PPO(Proximal Policy Optimization)近端策略优化
ppo是用于强化学习的策略优化算法,它是一个相对简单且高效的算法,旨在提高训练过程的稳定性和可靠性。PPO 通过在策略优化中引入克制机制来避免策略更新过大,从而实现更平稳的学习过程。
PPO算法不会让策略一下子变得完全不同,而是会逐步地、谨慎地调整策略(微调),确保每次调整都不会让结果变得太差。这就是PPO算法中“近端”这个词的含义——它只关注于当前策略附近的微小调整。
Transformer模型
Transformer模型的主要创新在于其使用的自注意力机制,可以有效地捕捉输入序列中各个部分之间的关系。
计划:想学transformer
Transformer模型的提出是在2017年Google论文《Attention is All You Need》。
读这篇论文,理解Transformer模型,且跑起来
1、为什么会有基于基于Transformer的模型?
中文作为翻译任务,那么中文作为输入,将中文转换为计算机可以识别的向量通常有两种方法:
One Hot编码:形成高维向量,对于中文来说,汉字的数量就是向量的维度,然后是哪个字就将对应位置变为1,其它位置变为0,以此来表示一句话。
Embedding词嵌入:通过网络进行训练或者通过一些训练好的模型将其转化成连续性的向量。
Transformer模型有encode和decode结构
在encode结构中,使用词向量编码后,再加入位置编码信息,因为transformer使用自注意力机制,虽然处理每个字的时候考虑到了所有字对其的影响,但是并没有考虑到各个字相互之间的位置信息,所以还需加位置编码,通过给每个字加上位置信息,增强了模型的输入。
transformer中会有Word Embedding代码用于字转为向量。
Pytorch框架下的transformers的使用
https://github.com/huggingface/transformers 这个是transformer的源码,huggingface团队在pytorch框架下开发了transformers工具包。比较重要的是src/transformers以及example这两个文件夹。其中,
src/transformers文件夹下是各类transformer模型的实现代码
examples下主要是各类下游任务的微调代码
想跑代码 参考 https://blog.csdn.net/lolgenius/article/details/107733882
在这个过程中,初始化了模型和分词器。其中,分词器是(Tokenizer)在自然语言处理(NLP)中是一个关键组件,其主要功能是将原始文本转换为模型可以处理的输入格式。分词器将文本分解成更小的单位,这些单位通常是单词、子词或字符,并将这些单位映射到对应的数值表示。如在文本任务中,分词器将输入的文本转换为模型所需的格式。