Hugging Face 如何用 Intel 软件在现代 CPU 上扩展 BERT 类模型推理(第二部分)
Hugging Face 博客第二部分聚焦软件优化,介绍如何借助 Intel oneAPI 生态提升 BERT 类模型在现代 CPU 上的推理性能。
Hugging Face 博客第二部分聚焦软件优化,介绍如何借助 Intel oneAPI 生态提升 BERT 类模型在现代 CPU 上的推理性能。
Hugging Face 发文质疑微软与 NVIDIA 发布的 Megatron-Turing NLG 530B 这类超大模型趋势,指出复现该实验需花费近 1 亿美元,且训练 BERT 的碳排放已相当于一次跨美飞行。文章主张改用预训练模型、更小模型(如 DistilBERT 保留 97% 语言理解能力、体积小 40%、速度快 60%)和微调等务实方案。
Hugging Face 发文称机器学习正走向“代码化”,主张用软件工程与 DevOps 的成熟实践(版本管理、可复用、可测试、自动化、部署与监控)来构建生产级 ML 系统,即 MLOps。
Hugging Face 博客介绍如何用 Gradio 在 Spaces 中托管 ML 演示:通过 gr.Interface.load 调用 Hub 模型并借助 Inference API 推理,只需定义模型仓库 ID、标题、描述和示例输入,调用 .launch() 即可运行。
Hugging Face 发布博客,介绍如何用 Streamlit 在 Hugging Face Spaces 上托管模型与数据集并搭建演示应用。
Hugging Face 在 2021 AI Hardware Summit 上宣布启动硬件合作伙伴计划,Graphcore 作为创始成员参与,双方将让开发者通过新开源库 Optimum 部署针对 IPU 优化的 Transformer 模型。首批 IPU 优化模型将于今年晚些时候上线 Optimum,覆盖视觉、语音、翻译和文本生成等应用。
Hugging Face 发布开源库 Optimum,目标是简化 Transformers 在特定硬件上的训练与推理性能优化,首个合作方为 Intel。
推荐理由:Hugging Face 官方发布 Optimum 开源库,读者可了解其与 Intel 合作在特定硬件上做模型量化的思路。
OpenAI 发布 Triton 1.0,这是一门开源的类 Python 编程语言,让没有 CUDA 经验的研究者也能编写高效的 GPU 代码,多数情况下能达到专家水平。
推荐理由:OpenAI 开源 Triton 1.0,让没有 CUDA 经验的研究者也能写出接近专家水平的 GPU 代码。
Hugging Face Hub 现已集成 spaCy,用户可通过一条命令上传任意 spaCy pipeline 包,自动生成模型卡和元数据。spaCy 官方组织已上线 60 多个来自 3.1 版本的 canonical 模型,Inference API 开箱支持 NER,并可通过 pip install 直接安装使用。
Hugging Face 发布面向 Amazon SageMaker 的 Inference DLC 与 Inference Toolkit,只需在 HuggingFaceModel 后加一行 .deploy() 即可部署模型,也可直接选用 Model Hub 上 10,000+ 公开模型。
Hugging Face Hub 现已集成 Sentence Transformers 框架,并随 Sentence Transformers v2 发布上线 90 多个预训练模型,覆盖 100 多种语言。
Gradio 2.0 发布,可用一行代码为 Hugging Face 模型加载 GUI,默认调用 Hugging Face 托管的 Inference API,也可本地运行 transformers。该版本支持把多个模型并联对比或串联组合,例如用 3 行代码搭建翻译并摘要芬兰语新闻的应用,安装方式为 pip install gradio。
推荐理由:原文给出 Gradio 2.0 一行代码加载 Hugging Face 模型并串联、并联组合的方式,读者可据此判断搭建模型演示的成本变化。
Hugging Face 发布博客,介绍在 CPU 上扩展 BERT 推理的硬件优化方法,基于 AWS c5.metal 实例(Intel Xeon Platinum 8275,48 核/96 线程)测试,使用 transformers 4.5.0、PyTorch 1.8.1 与 TensorFlow 2.4.0。
Hugging Face 发布 Accelerate 库,面向希望完全掌控训练循环、又不愿编写分布式训练和混合精度样板代码的 PyTorch 用户。只需在标准训练脚本中加入约五行代码,即可在单机多卡、多节点、TPU 等分布式环境以及有无混合精度的情况下运行,并自动处理设备放置。
推荐理由:官方给出五处代码改动即可切换分布式与混合精度的具体做法,便于评估对现有 PyTorch 训练脚本的改造成本。
Hugging Face 与 Amazon SageMaker 合作推出经优化的 🤗 Transformers 深度学习容器,并在 SageMaker Python SDK 中新增 HuggingFace estimator,一行代码即可启动训练。
Hugging Face 宣布与 Amazon 建立战略合作,并以 AWS 作为其首选云服务商,双方推出 Hugging Face Deep Learning Containers(DLCs),让用户在 Amazon SageMaker 中训练 Transformer 模型。
社区成员 Maxence Dominici 在 Google Cloud 上部署了 transformers 情感分析 pipeline,用于自动判断 Discord 中客户评论的正负向。
Hugging Face 博客 2021 年 2 月阅读小组聚焦长程注意力,梳理了 Longformer、Compressive Transformer、Linformer、Performer 四类降低 Transformer 序列长度二次开销的思路。
Hugging Face Transformers 的 RAG 模型集成 Ray 实现分布式文档检索,每次检索调用相比 torch.distributed 提速 2 倍,并改善了 RAG 分布式微调的可扩展性。
Hugging Face 与 Facebook PyTorch、Google TPU 团队合作,让用户通过 PyTorch / XLA 在 Cloud TPU 上训练 Transformer,并保持与 Hugging Face Trainer 完全相同的接口。
Hugging Face 在 Transformers v4.2.0 中优化了 TensorFlow 版 BERT、RoBERTa、ELECTRA 和 MPNet,在 GPU V100、序列长度 128 下,BERT 推理速度比 Google 官方实现快约 10%,比 v4.1.1 快一倍。
OpenAI 将 Kubernetes 集群扩展至 7,500 节点,为 GPT-3、CLIP、DALL·E 等大模型提供可扩展基础设施,同时支持小规模快速迭代研究。
Hugging Face 的 transformers v4.2.0 起通过 --sharded_ddp 和 --deepspeed 两个 Trainer 参数实验性支持 FairScale 与 DeepSpeed 的 ZeRO 功能。
推荐理由:作者用 t5-large 与 t5-3b 实测对比 FairScale 与 DeepSpeed 的显存与速度差异,并给出可直接复用的 Trainer 参数。
Hugging Face 通过组合 Transformers 与 Tokenizers 库的优化方法,为 Accelerated Inference API 客户实现了 100 倍推理提速。
Hugging Face 博客发布 Stas Bekman 的客座文章,记录将 fairseq wmt19 翻译系统移植到 transformers 的完整过程。作者选用 en-ru / ru-en 预训练模型进行移植,并创建了 configuration_fsmt.py、modeling_fsmt.py、tokenization_fsmt.py 及转换脚本等文件。
Hugging Face 发布 PyTorch 扩展 pytorch_block_sparse,其 BlockSparseLinear 可直接替换 torch.nn.Linear,实现块稀疏矩阵运算。
Hugging Face 博客详解 Reformer 模型,它能在不到 8GB 内存下训练长度达 50 万 token 的序列,而 bert-base-uncased 仅支持 512 token。Reformer 通过局部自注意力、LSH 自注意力、分块前馈层、可逆残差层和轴向位置编码四项改造降低内存占用,并已集成进 Transformers 库。
OpenAI 宣布将其深度学习框架标准化为 PyTorch。
OpenAI 发布针对块稀疏权重神经网络的高度优化 GPU kernel,按所选稀疏度可比 cuBLAS 或 cuSPARSE 快数个数量级。OpenAI 表示已用这些 kernel 在文本情感分析和文本、图像生成建模上取得当时的最优结果。
推荐理由:OpenAI 公开面向块稀疏权重网络的 GPU kernel,并给出相对 cuBLAS 与 cuSPARSE 的加速幅度和落地任务。
OpenAI 开源了一个基于 MuJoCo 引擎的高性能 Python 机器人仿真库,该库在其过去一年的机器人研究中开发完成。
OpenAI 正与 Microsoft 合作,将其大部分大规模实验放到 Azure 上运行。
OpenAI 认为深度学习是一门经验科学,团队基础设施的质量是进展的倍增器。如今的开源生态让任何人都能搭建出色的深度学习基础设施。