大模型开源生态与硬件选型
大模型时代的 Github: Hugging Face
Hugging Face 是什么?
Hugging Face 是一家2016年成立的总部位于纽约的 AI 初创公司。 最早是一家开发聊天机器人的企业。他们的目标是使用聊天机器人为无聊的年轻人解闷。当然,这样的创意虽然看起来很好,但显然并没有做得很大。
HuggingFace 转型契机:主要来源于它在NLP领域的贡献。在Bert发布不久之后,他们贡献了一个基于Pytorch的Bert预训练模型,即pytorch-pretrained-bert。
Hugging Face Transformers
https://github.com/huggingface/transformers
Hugging Face 在 GitHub上维护了一 个庞大的开源社区,提供了丰富的机 器学习(ML)工具和模型,其中最 著名的项目是Transformers。 Transformers:先进的机器学习库, 提供了基于TensorFlow、PyTorch、 JAX实现的各种SOTA模型和工具
Hugging Face 开源社区
Hugging Face 公司提供了一个面向机器学习和数据科学的开源社区。它包含超过300,000个模型、50,000个数据集和100,000个 名为Spaces的Demo Apps :
https://huggingface.co/docs
-
HF Models: 用户可以在这里共享、下载和部署预训练模型。此外,他们还提供了Inference API,使开发者能够轻松地使用 这些模型进行自然语言处理任务,无需深入了解模型的内部工作原理。
-
HF Datasets:针对机器学习和大语言模型的各类任务,提供了一个分享和交流数据集的平台,便于缺少数据的开发者和用户 快速启动项目。
-
HF Spaces: Hugging Face通过提供AI计算资源来实现盈利。他们提供 AutoTrain、Spaces和Inference Endpoints等服务, 用于将模型集成到实际应用中。
-
HF Docs: 除了开源项目和商业产品,Hugging Face 还积极参与教育和研究社区,为学生、研究人员和开发者提供教程、 文档和资源,以帮助他们更好地理解和应用ML和LLM技术。
HF Open LLM Leaderboard (大模型天梯榜)
https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard/tree/main
Open LLM Leaderboard使用 Eleuther A I语言模型评估工具对模型进行了4个关键基准测试,这是一个统一的框架,用于在 大量不同的评估任务上测试生成式语言模型。
-
AI2推理挑战(25-shot)- 一组小学科学问题。
-
HellaSwag(10-shot)- 这是一个常识推理测试,对人类来说很容易(约95%),但对SOTA模型来说具有挑战性。
-
MMLU(5-shot)- 这是一个测量文本模型多任务准确性的测试。该测试涵盖57个任务,包括初等数学、美国历史、计算 机科学、法律等等。
-
TruthfulQA(0-shot)- 这是一个衡量模型倾向于复制在线常见谬误的测试。(注意:Harness中的TruthfulQA实际上是一 个6-shots任务,在启动时即使将few-shot示例数量设置为0,也会自动添加6个示例。)
对于所有这些评估,得分越高越好。 Open LLM Leaderboard 选择了这些基准作为它们在0-shot和few-shot环境下涵盖了各 种推理和广泛知识领域。
显卡选型推荐指南
GPU vs 显卡
GPU(图形处理单元) :计算机内部的硬件组件,用于处理图形和图像相关的任务。
主要功 能:
-
处理图形渲染,包括游戏、视频和动画。
-
加速通用计算,如深度学习、科学模拟等。
-
高度并行处理,适用于大规模数据处理和处理密集型任务。
显卡 :包含一个或多个GPU芯片的硬件设备,通常用于图形渲染和计算任务。 主流显卡的显 示芯片主要由NVIDIA(英伟达)和AMD(超威半导体 )两大厂商制造,通常将采用NVIDIA显示 芯片的显卡称为N卡,而将采用AMD显示芯片的显卡称为A卡。
主要作用:
-
将GPU集成到计算机中,通过接口(如PCIe)连接到主板。
-
提供图形输出接口,如HDMI、DisplayPort,使显示器能够显示图像。
-
可以有不同的物理尺寸和散热解决方案,适应各种计算机类型和用途。
GPU与显卡关系:
-
GPU是显卡的核心组件,决定了计算性能。
-
显卡则是将GPU与必要的接口、散热、电源管理等元件集成在一起的硬件设备。
GPU Core vs AMD CU
显卡虽然是一大块卡,但它真正执行运算的部分只是一枚和 CPU 一样大小的芯片——显卡核心;显卡 PCB 上其他组件,都是 为它提供电源、通信、存储功能的。
这个小芯片承担着与 CPU 不同的定位和功能,芯片设计思路也完全不同。这就导致,我们谈论 GPU 时,所说的 Core,完全不 是 CPU 上那个意思。
作为辅助 CPU 执行计算的周边器件,它不需要承担那些系统管理、调度的功能,完全专注于使用(大量的)小核心并行化地执 行基础运算(通常都有数千个核心同时执行)。—— GPU Core 小而且多,这是我们的初步印象。
AMD 倾向于简化整个模型,用 CU 来讨论他们的显卡核心数量。Compute Unit 指的是一组执行运算的元件的集群(cluster) ,它里面有大量更小的计算单元。
由于技术路线和优势不同,AMD 更在乎自己的总线技术(例如 Infinity Cache)和集群结构,自然也倾向于以 CU 数量来讨论 显卡性能。CU 不会具体对应到计算单元的数量,而只是跟缓存、总线结构有关。
CU 在概念上更接近 Nvidia 的 SM。所以千万不要拿 A 卡的 CU 与 N 卡的 CUDA Core 相比,是两个完全错位的概念。
CUDA Core
N 卡上,经常提到的概念是 CUDA Core。英伟达倾向于用最小的运算单元表示自己的运算能力,CUDA Core 指的是一 个执行基础运算的处理元件。最早的时候,这个「基础组件」类似于 CPU 中负责各种数值计算的那个 core,能做很多 通用运算
但后来就不一样了,例如整型计算和浮点型计算单元的数量不一样了。CUDA Core 不再能 1:1 地对应上这些小运算单 元。它的定义就开始变化:有时2个 CUDA Core 才能凑出1个整型运算单元。
所以 CUDA Core 的定义其实是复杂而且变化的。你不能单纯用 CUDA Core 的数量来跨代际比较显卡性能(因为它在两 代显卡中的定义都不同)。
由于 CUDA Core 根本就是为了方便商业营销而创造的概念,英伟达喜欢将其称为「用于营销目的」的核心。 随着架构的更替,经过一代又一代的演变。
现在 Ampere 架构上所说的 CUDA Core(的数量),对应的其实是 FP32 计算单元(的数量)
Nvidia A100
Ampere 架构最强显卡 A100 的内部架构:
128 个 SM(Streaming Multiprocessor,流式多处理器),密密麻麻地排布在中间蓝色的 L2 Cache 两侧。
关注 SM 这个概念,它在 N 卡架构中非常重要,N 卡的多核并行化就是靠平行布置大量的 SM 来实现的。
流式多处理器内部结构
Tensor Core (这是判断GPU最重要的一个指标 还有SM)
机器学习、神经网络的时代到来了。在这种应用场景 下,矩阵运算的计算量非常大……那就干脆……再来 个 Tensor Core,专门算矩阵
Tensor Core 有着专门设计的硬件结构,可以把整个矩 阵都载入寄存器中批量运算,有十几倍的效率提升。 这简直是机器学习神器——自 Volta 架构发布以来,奠 定了 N 卡在机器学习领域的江湖地位。
Volta 以来的每一代架构,除了制程上的进步,Nvidia 也不遗余力地更新着他们的 Tensor Core:
N 卡架构变迁
显卡性能天梯榜
https://topic.expreview.com/GPU/