CUDA 和 Torch

Torch 是一个老牌开源机器学习库,其底层实现基于 C/C++。Torch 提供了强大的张量计算功能以及一套完整的深度学习框架,支持高效的 GPU 加速计算和自动求导机制。

PyTorch 可以看作是 Torch 的一个分支或者后继者,保留了 Torch 的一些核心理念和技术优势,同时通过采用 Python 这一流行的数据科学和机器学习领域的编程语言,极大地提高了用户友好度和生态系统的兼容性。目前一般所说的“Torch版本”可以理解为PyTorch项目的版本号。

CUDA是由 NVIDIA 公司推出的一种并行计算平台和编程模型,它使得开发者能够利用 NVIDIA 的 GPU 进行大规模并行计算,从而极大地加速数据密集型任务,尤其是在处理深度学习中大量浮点运算时的优势尤为明显。

PyTorch 依赖 CUDA ,不同版本的 PyTorch 需要特定版本的 CUDA。

Sota

Sota实际上就是State of the arts 的缩写,指的是在某一个领域做的Performance最好的model,一般就是指在一些benchmark的数据集上跑分非常高的那些模型。

SOTA model:并不是特指某个具体的模型,而是指在该项研究任务中,目前最好/最先进的模型。

SOTA result:指的是在该项研究任务中,目前最好的模型的结果/性能/表现。

非端到端模型

传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词、词性标注、句法分析、语义分析等多个独立步骤,每个步骤是一个独立的任务,其结果的好坏会影响到下一步骤,从而影响整个训练的结果,这是非端到端的。

端到端模型

从输入端到输出端会得到一个预测结果,将预测结果和真实结果进行比较得到误差,将误差反向传播到网络的各个层之中,调整网络的权重和参数直到模型收敛或者达到预期的效果为止,中间所有的操作都包含在神经网络内部,不再分成多个模块处理。由原始数据输入,到结果输出,从输入端到输出端,中间的神经网络自成一体(也可以当做黑盒子看待),这是端到端的。

Benchmark、Baseline

Benchmark和baseline都是指最基础的比较对象。你论文的motivation来自于想超越现有的baseline/benchmark,你的实验数据都需要以baseline/benckmark为基准来判断是否有提高。唯一的区别就是baseline讲究一套方法,而benchmark更偏向于一个目前最高的指标,比如precision,recall等等可量化的指标。举个例子,NLP任务中BERT是目前的SOTA,你有idea可以超过BERT。那在论文中的实验部分你的方法需要比较的baseline就是BERT,而需要比较的benchmark就是BERT具体的各项指标。

并发、并行、串行

  1. 我中午12:00开始吃饭,吃到一半,女朋友打来一个电话,我需要等到我吃完饭才可以接电话,这说明我不支持并行与并发,我的运作方式属于串行,串行有一个执行单元(只有一个执行任务单元的cpu核)。
  2. 我中午12:00开始吃饭,吃到一半,女朋友打来一个电话,我可以接起电话,跟女朋友打完电话继续吃饭,这说明我支持并发与串行
  3. 我中午12:00开始吃饭,吃到一半,女朋友打来一个电话,我可以一边接电话一边吃饭,这说明我支持并行与并发。(并行有多个任务执行单元,多个任务可以同时执行)