在现代 CPU 上扩展类 BERT 模型推理(第二部分):用 Intel 软件优化 CPU 上的 AI 效率
Hugging Face 发布博客第二部分,介绍如何借助 Intel oneAPI 软件栈在现代 Xeon CPU 上优化类 BERT 模型推理。Intel Ice Lake 代 Xeon 在多种 NLP 任务上推理速度最高比上代 Cascade Lake 快 75%,依托 AVX512、VNNI 指令及 oneMKL、oneDNN、OpenMP、oneTBB 等库。
Hugging Face 发布博客第二部分,介绍如何借助 Intel oneAPI 软件栈在现代 Xeon CPU 上优化类 BERT 模型推理。Intel Ice Lake 代 Xeon 在多种 NLP 任务上推理速度最高比上代 Cascade Lake 快 75%,依托 AVX512、VNNI 指令及 oneMKL、oneDNN、OpenMP、oneTBB 等库。
微软和 NVIDIA 发布 Megatron-Turing NLG 530B,号称全球最大最强的生成式语言模型,但复现成本接近 1 亿美元,单台 DGX A100 服务器售价 19.9 万美元、功耗达 6.5 千瓦。
Hugging Face 课程第二部分将于 11 月 15 日发布,聚焦 token 分类、语言建模、翻译、摘要和问答等 NLP 任务,并深入讲解 Datasets 与 Tokenizers。配套社区活动包含两天讲座和团队项目,AWS 通过 Amazon SageMaker 提供免费算力,完成项目者可获结业证书。
Hugging Face 在社区周期间用 10 亿句对训练出 SOTA 句嵌入模型,硬件为 7 块 TPU v3-8,并获得 Google Flax、JAX 与 Cloud 团队指导。训练采用批内负样本的对比学习目标(InfoNCE/NTXentLoss),通过增大 batch size、引入 hard negatives 和跨数据集组批提升效果。模型与数据集已在模型卡中公开。
Hugging Face 发文指出,机器学习正像十年前的 DevOps 一样走向"机器学习即代码",软件工程的最佳实践应被数据科学与机器学习采纳。Kaggle 调查显示 75% 受访者使用云服务、超 45% 使用企业 ML 平台,前三为 Amazon SageMaker、Databricks 和 Azure ML Studio。
一个跨 12 个时区的团队用 RSICD、UCM 和 Sydney 三个遥感数据集微调了 OpenAI 的 CLIP,使其能按文本描述检索卫星图像。训练采用对比学习,并用 Torchvision 图像增强与 Marian MT 回译文本增强抑制过拟合。模型、项目页与 demo 均已公开,可用于以文本查询大规模卫星图像库。
Gradio 与 Hugging Face Hub 集成,只需定义 Interface 并调用 .launch() 即可演示模型,底层调用 Inference API,支持 Transformers、spaCy、SpeechBrain、Asteroid 及 image-to-text、speech-to-text、text-to-speech 等模型类型。
Hugging Face 发布博客,介绍如何用 Streamlit 在 Hugging Face Spaces 上托管模型和数据集并部署 Streamlit 应用。
Hugging Face 回顾夏季进展:Hub 上的公开模型仓库从 1 万个增至超过 1.6 万个,并推出可直接托管 ML 演示应用的 Spaces Beta,支持 Gradio 和 Streamlit。7 月举办的 JAX/Flax Sprint 吸引近 800 名参与者,产出 170 多个模型、22 个数据集和 38 个 Spaces 演示。
Hugging Face 在 2021 AI Hardware Summit 上宣布启动 Hardware Partner Program,Graphcore 作为创始成员参与,双方将让开发者通过 Optimum 开源库在 IPU 上部署经认证的硬件优化 Transformer 模型,首批 IPU 优化模型将于今年晚些时候上线。
Hugging Face 发布开源库 Optimum,目标是成为 Transformer 生产性能的优化工具集,让模型在特定硬件上训练和推理达到最高效率。Optimum 与硬件伙伴合作,把稀疏化、量化等加速技术与目标硬件适配的复杂度抽象出来,首个合作案例是 Intel Neural Compressor,用于在 Intel Xeon CPU 上量化模型。
推荐理由:Hugging Face 官方发布 Optimum 开源库,读者可了解其如何把硬件加速与量化流程抽象成统一工具。
Hugging Face 团队提出 DeDLOC 协作式分布式训练方法,可自适应参与者的网络与硬件条件,并用 40 名志愿者在互联网上预训练出孟加拉语模型 sahajBERT。
推荐理由:Hugging Face 团队用 40 名志愿者在互联网上预训练出孟加拉语模型,给出了分布式协作训练在真实场景中的完整方法与评测结果。
Hugging Face Hub 现已支持 spaCy,用户可通过一条命令上传任意 spaCy pipeline 包,并自动生成模型卡和元数据。Hub 的 spaCy 组织已收录 60 多个来自 3.1 版本的官方模型,Inference API 开箱支持 NER,并配有 NER 可视化组件。
Hugging Face 发布面向 Amazon SageMaker 的 Inference DLC 与 Inference Toolkit,只需一行代码即可部署训练好的 Transformer 模型,或从 Model Hub 的 10,000+ 公开模型中选择部署。
Hugging Face Hub 与 Sentence Transformers 达成集成,随 Sentence Transformers v2 发布,Hub 上已有 90 多个预训练模型、覆盖 100 多种语言。
Hugging Face 发文介绍如何用 EleutherAI 的 GPT-Neo 配合 🤗 Accelerated Inference API 实现少样本学习预测。
Gradio 2.0 发布,只需 1 行代码即可为几乎任意 Hugging Face 模型加载 GUI,默认调用 Hugging Face 托管的 Inference API,也可本地运行 transformers。该版本支持并行加载多个模型进行对比,或将模型串联组合,例如用 3 行代码搭建翻译并摘要芬兰语新闻的应用。
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 用户在不改写训练循环的前提下使用分布式训练和混合精度。只需在标准训练脚本中加入约五行代码,Accelerate 就会自动完成设备放置、模型与优化器包装、数据加载器分片以及反向传播处理,并配套 accelerate config 与 accelerate launch 命令行工具。
推荐理由:原文给出五处代码改动即可让原生 PyTorch 脚本支持分布式与混合精度,可据此评估迁移成本。
Hugging Face 与 Amazon SageMaker 合作推出优化版 Deep Learning Containers,配合 SageMaker Python SDK 中的 HuggingFace estimator,一行代码即可启动训练。
Hugging Face 发文详解 BigBird 的块稀疏注意力机制,该模型已集成进 🤗Transformers。BigBird 用块稀疏注意力近似 BERT 的全局注意力,可处理长达 4096 的序列,计算成本远低于 BERT,并在长文档摘要、长上下文问答等任务上取得 SOTA。其注意力由滑动注意力、全局 token 和随机 token 三部分组成。
Hugging Face 宣布与 Amazon 建立战略合作,并以 AWS 作为其首选云服务商,双方推出 Hugging Face Deep Learning Containers(DLCs),让用户在 Amazon SageMaker 中训练 Transformers 模型。
社区成员 Maxence Dominici 分享了在 Google Cloud 上部署 transformers 情感分析 pipeline 的过程,最终方案采用 Cloud Run 加 Docker 镜像,模型为 DistilBERT base uncased finetuned SST-2,用 PyTorch 加载。
Hugging Face 发布教程,讲解如何用 🤗 Transformers 将 Wav2Vec2 预训练检查点微调到任意英语 ASR 数据集。Wav2Vec2 于 2020 年 9 月发布,基于 50,000 小时以上无标注语音预训练,仅用 10 分钟标注数据即可在 LibriSpeech 干净测试集上取得低于 5% 的 WER。
Hugging Face 博客 2021 年 2 月阅读小组聚焦 Transformer 的长程注意力问题,围绕 Longformer、Compressive Transformer、Linformer、Performer 四篇论文展开,归纳出自定义注意力模式、循环、低秩近似与核近似四条降低序列长度二次开销的路线。
Hugging Face 工程师分享构建和调试神经网络的思考流程:先放下机器学习、专注分析数据,再从逻辑回归、word2vec、fastText 等简单基线起步,并敢于拆开那些"5 行代码"模板看内部实现。作者建议实现完成后先尝试过拟合 16 个样本的小批量数据,若无法达到 0 loss,很可能实现有误,而非模型表达能力不足。
Hugging Face Transformers 的 RAG 模型集成 Ray 实现分布式文档检索,每次检索调用相比 torch.distributed 提速 2 倍,并改善了 RAG 分布式微调的可扩展性。
Hugging Face 与 PyTorch/XLA 团队合作,让 Trainer 模块可直接在 Cloud TPU 上训练模型,用户保持原有 Hugging Face trainers 接口不变。
Hugging Face 在 Transformers v4.2.0 中优化了 TensorFlow 版 BERT、RoBERTa、ELECTRA 和 MPNet 的计算性能,在 GPU V100、序列长度 128 下,BERT 推理速度比 Google 官方实现快约 10%,比 4.1.1 版本快一倍。
Hugging Face 的 transformers v4.2.0 起为 Trainer 加入 DeepSpeed 和 FairScale 的 ZeRO 实验性支持,新增 --deepspeed 和 --sharded_ddp 命令行参数。
推荐理由:作者用 t5-large 与 t5-3b 的实测数据对比 FairScale 和 DeepSpeed 的显存与速度差异,可据此选择训练方案。
Hugging Face 通过模型管线优化、Rust 版 Tokenizers 与智能缓存,为托管 Accelerated Inference API 客户实现约 10 倍推理提速;再结合面向 CPU/GPU 的图优化、算子融合与量化等编译级手段,累计达到 100 倍。该优化针对 GPT 等架构与目标硬件定制,客户无需随 Transformers、Tokenizers 月度更新自行适配。
Hugging Face 发布教程,介绍如何用 BERT、GPT2 等预训练检查点热启动编码器-解码器模型,跳过昂贵的预训练阶段。基于 Rothe 等人 2020 年的论文,该方法在多个序列到序列任务上以极低训练成本达到与 T5、Pegasus 等大型预训练模型相当的效果,并附有 🤗Transformers 的完整代码示例。
Hugging Face 发布博客,记录作者 Stas Bekman 在 Sam Shleifer 建议下,将 fairseq 的 WMT19 新闻翻译系统移植到 transformers 的全过程。
Hugging Face Transformers 在 3.1 版本中与 Ray Tune 集成,用户只需添加几行代码即可调用 HyperBand、Bayesian Optimization、Population-Based Training 等调参算法。
Hugging Face 发布博客,详解基于 Transformer 的编码器-解码器架构如何建模序列到序列问题,重点拆解编码器与解码器两部分及其推理用法。文章指出该架构由 Vaswani 等人提出,如今已是 NLP 领域事实上的标准,T5、Bart、Pegasus、ProphetNet、Marge 等预训练目标各异但架构基本未变。
Hugging Face 发布 PyTorch 扩展 pytorch_block_sparse,其 BlockSparseLinear 可直接替换 torch.nn.Linear,让语言模型更小更快。
Hugging Face 博客详解 Reformer 如何用不到 8GB 内存训练长度达 50 万 token 的序列,而 bert-base-uncased 的输入长度上限只有 512 token。
Hugging Face 发布博客,介绍用 transformers 库进行自回归语言生成的多种解码方法,包括贪心搜索、beam search 和采样。
推荐理由:系统梳理贪心、beam search 与采样等解码策略的差异,并给出 transformers 中可直接运行的参数配置。
Hugging Face 发布教程,演示如何用 transformers 和 tokenizers 库从零训练一个语言模型,并以世界语为例训练了 84M 参数(6 层、768 隐藏维度、12 注意力头)的 EsperBERTo。
推荐理由:以世界语为例完整演示从语料、分词器到预训练与下游微调的全流程,可迁移到其他低资源语言。