在 Habana Gaudi 上快速上手 Transformers:AWS 实例搭建与 BERT 微调实战
Hugging Face 发布教程,演示如何在 AWS EC2 DL1 实例(搭载 8 颗 Habana Gaudi 处理器)上微调 BERT 模型。使用 bert-large-uncased-whole-word-masking 在 GLUE 的 MRPC 任务上训练 3 个 epoch,耗时 2 分 12 秒,F1 达 0.8968。
Hugging Face 发布教程,演示如何在 AWS EC2 DL1 实例(搭载 8 颗 Habana Gaudi 处理器)上微调 BERT 模型。使用 bert-large-uncased-whole-word-masking 在 GLUE 的 MRPC 任务上训练 3 个 epoch,耗时 2 分 12 秒,F1 达 0.8968。
Hugging Face 机器学习工程师 Lewis Tunstall 在播客中介绍了自己从 2018 年使用 pytorch-pretrained-bert 到合著《NLP with Transformers》的经历,并谈到在 transformers 库中推动 ONNX 格式导出,让模型只需一行代码即可转换,从而获得更低延迟和更高吞吐。
Hugging Face 的 Transformers 库有意不遵循 DRY 原则,转而采用"单模型文件策略",即模型前向传播所需的全部代码只放在一个 model 文件中,注意力机制代码因此被复制 50 多次。官方给出的理由包括:库由开源社区共建、建模代码本身就是产品、机器学习领域演进极快、模型发布后基本静态不变。
Hugging Face 发布端到端教程,演示如何用 Hugging Face Transformers、Amazon SageMaker 和 AWS Inferentia 加速 BERT 文本分类推理。
Hugging Face 公布 Infinity 在第三代 Intel Xeon 可扩展处理器(Ice Lake)上的端到端推理基准:优化后的 DistilBERT 序列分类容器相比 Cascade Lake 实例延迟与吞吐最高提升 34%,相比原生 Transformers 最高提升 800%。
Hugging Face 发布教程,介绍如何用 Amazon SageMaker 和 Hugging Face Inference Toolkit 部署 EleutherAI 的 GPT-J 6B 进行实时推理,可在 NVIDIA T4 GPU 实例(约 500 美元/月)上运行。
OpenAI 为 GPT-3 推出微调功能,开发者用一条命令即可针对自己的应用定制模型。该功能面向应用场景的个性化需求,降低了定制 GPT-3 的操作门槛。
Hugging Face 与 Graphcore 合作推出 Optimum Graphcore,让 Transformer 模型可在 Graphcore IPU 上加速,BERT 成为首个 IPU 优化模型。
在 Intel Xeon Scalable(Ice Lake)CPU 集群上分布式微调 BERT,可将训练时间与成本控制在合理范围。
Hugging Face 博客第二部分聚焦用 Intel 软件栈优化 CPU 上的类 BERT 模型推理,实测新一代 Ice Lake Xeon 在多种 NLP 任务上推理速度较上代 Cascade Lake 最高提升 75%。
微软和 NVIDIA 发布 Megatron-Turing NLG 530B,号称全球最大最强的生成式语言模型,但复现该实验的基础设施成本接近 1 亿美元。作者质疑这类超大模型趋势:单台 DGX A100 服务器售价 19.9 万美元、功耗最高 6.5 千瓦,而 2019 年马萨诸塞大学研究显示在 GPU 上训练 BERT 的碳排放约等于一次横跨美国的飞行。
Hugging Face 发文指出,Transformer 正从 NLP 扩展为通用 ML 架构,在语音、计算机视觉、点云乃至蛋白质结构预测上表现优异,Kaggle 调查显示其使用率逐年上升而 RNN、CNN 和梯度提升算法持续下滑。
Hugging Face 博客介绍如何用 Gradio 在 Spaces 中托管 ML 演示应用。Gradio 已集成 Hugging Face Hub,只需几行代码调用 gr.Interface.load() 即可通过 Inference API 演示 Hub 上的模型,支持 image-to-text、speech-to-text、text-to-speech 等类型。
Hugging Face 发布教程,介绍如何用 Streamlit 在 Hugging Face Spaces 上托管模型和数据集并搭建演示应用。
Hugging Face 发布开源库 Optimum,目标是简化 Transformer 模型在特定硬件上的训练与推理优化,首个合作方为 Intel。Optimum 与 Intel Neural Compressor 配合,可对 BERT 等模型做训练后量化、量化感知训练和动态量化,用于 Intel Xeon CPU 部署。
推荐理由:Hugging Face 官方发布 Optimum 开源库,读者可了解其与 Intel Neural Compressor 配合量化 Transformer 的路径。
Hugging Face 在 2021 AI Hardware Summit 上宣布启动 Hardware Partner Program,Graphcore 作为创始成员参与,双方将通过新开源库 Optimum 提供经 Hugging Face 认证的 IPU 优化模型,首批模型预计今年晚些时候上线。
OpenAI 发布 Triton 1.0,这是一门开源的类 Python 编程语言,让没有 CUDA 经验的研究者也能编写高效的 GPU 代码,多数情况下能达到专家水准。Triton 1.0 以开源形式发布。
推荐理由:OpenAI 官方发布 Triton 1.0,说明无 CUDA 经验的研究者也能写出接近专家水平的 GPU 代码。
Hugging Face Hub 现已集成 spaCy,用户可通过一条命令上传任意 spaCy pipeline 包,并自动生成模型卡和元数据。spaCy 官方组织已上线 60 多个来自 3.1 版本的最新模型,Inference API 开箱支持 NER,浏览器内即可交互试用。模型可直接通过 pip install 安装,并支持 HTTP 请求调用。
Hugging Face 发布面向 Amazon SageMaker 的 Inference DLC 与 SageMaker Hugging Face Inference Toolkit,只需在 HuggingFaceModel 后加一行 .deploy() 即可部署模型,也可直接从 Model Hub 选取 10,000+ 公开模型部署。
Hugging Face Hub 与 Sentence Transformers 达成集成,随 Sentence Transformers v2 发布,Hub 上已有超 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 类模型推理。
Hugging Face 发布开源库 Accelerate,让原始 PyTorch 训练脚本无需重写即可在任意设备上运行。只需在标准训练脚本中加入约五行代码,即可支持单机或多机多 GPU、TPU 以及混合精度训练,并自动处理设备放置。
推荐理由:官方给出五处代码改动即可跑分布式与混合精度的对比,便于判断迁移成本。
Hugging Face 与 Amazon SageMaker 合作推出优化版 🤗 Transformers 深度学习容器,并在 SageMaker Python SDK 中新增 HuggingFace estimator,一行代码即可启动训练。
Hugging Face 与 Amazon 宣布战略合作,Hugging Face 将 AWS 作为首选云服务商,并推出 Hugging Face Deep Learning Containers(DLCs),让用户可在 Amazon SageMaker 中训练 Transformer 模型。
社区成员 Maxence Dominici 分享了在 Google Cloud 上部署 transformers 情感分析 pipeline 的过程,最终方案基于 Cloud Run 与 Docker 镜像,使用 DistilBERT base uncased finetuned SST-2 模型和 PyTorch 推理。
Hugging Face 的月度阅读小组 2021 年 2 月聚焦长程注意力,围绕 Longformer、Compressive Transformer、Linformer、Performer 四篇论文梳理了降低 Transformer 序列长度二次开销的四条路线:自定义注意力模式、循环、低秩近似与核近似。
Hugging Face 工程师分享构建和调试神经网络的思考流程,建议先放下机器学习、专注分析数据标签与噪声,再从逻辑回归、word2vec、fastText 等简单基线起步,并对照随机预测器评估指标。作者还建议不要迷信五行代码模板,实现后可用 16 条样本做小批量过拟合测试,若无法达到 0 loss 则很可能存在实现错误。
Hugging Face Transformers 新增的 RAG 模型通过集成 Ray 实现分布式文档检索,每次检索调用相比 torch.distributed 提速 2 倍,并改善了 RAG 分布式微调的可扩展性。
Hugging Face 与 Facebook PyTorch、Google TPU 团队合作,让 PyTorch 用户能在 Cloud TPU 上训练模型并保持原有 Trainer 接口不变。PyTorch / XLA 新增 xla 设备类型,通过 xm.optimizer_step 完成梯度聚合与优化器更新,并用 MpDeviceLoader 让输入流水线与图追踪重叠执行。
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 等大模型提供可扩展基础设施,同时支持小规模快速迭代研究。
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 倍推理提速,再借助 ONNX Runtime 的图优化、算子融合与量化等硬件相关编译手段拿到另外 10 倍,合计 100 倍。
Hugging Face 发布客座博客,记录将 Facebook FAIR 的 fairseq wmt19 新闻翻译系统移植到 transformers 的完整过程。
Hugging Face 发布 PyTorch 扩展 pytorch_block_sparse,其 BlockSparseLinear 可直接替换 torch.nn.Linear,让模型更小更快。
OpenAI 宣布将其深度学习框架标准化为 PyTorch。此前 OpenAI 主要使用 TensorFlow,此次调整意味着 PyTorch 成为其模型训练与研究的统一框架。
OpenAI 发布面向块稀疏权重神经网络的高度优化 GPU 内核,按所选稀疏度可比 cuBLAS 或 cuSPARSE 快数个数量级。该内核已用于文本情感分析以及文本和图像生成建模,并取得当时最优结果。
OpenAI 正与 Microsoft 合作,将其大部分大规模实验放到 Azure 上运行。
深度学习是一门经验科学,团队基础设施的质量是进展的倍增器。OpenAI 指出,如今的开源生态让任何人都能搭建出色的深度学习基础设施。