Hugging Face 如何用 CPU 扩展 BERT 推理(上):核心数与批大小调优
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 发布博客第一部分,介绍在 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 宣布与 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 博客 2021 年 2 月阅读小组聚焦 Transformer 的长程注意力问题,围绕 Longformer、Compressive Transformer、Linformer、Performer 四篇论文展开,归纳出自定义注意力模式、循环、低秩近似与核近似四条降低序列长度二次开销的路线。
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 版本快一倍。
OpenAI 已将 Kubernetes 集群扩展至 7,500 节点,为 GPT-3、CLIP 和 DALL·E 等大模型提供可扩展基础设施,同时支持 Scaling Laws for Neural Language Models 这类快速小规模迭代研究。
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 发布博客,记录作者 Stas Bekman 在 Sam Shleifer 建议下,将 fairseq 的 WMT19 新闻翻译系统移植到 transformers 的全过程。
Hugging Face 发布 PyTorch 扩展 pytorch_block_sparse,其 BlockSparseLinear 可直接替换 torch.nn.Linear,让语言模型更小更快。
OpenAI 宣布将其深度学习框架标准化为 PyTorch。
OpenAI 发布面向块稀疏权重神经网络的高度优化 GPU 内核,按所选稀疏度可比 cuBLAS 或 cuSPARSE 快数个数量级。该内核已用于文本情感分析以及文本和图像生成建模,并取得 SOTA 结果。
OpenAI 指出深度学习是一门经验科学,团队基础设施的质量是进展的倍增器。如今的开源生态让任何人都能搭建出色的深度学习基础设施。