- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
几周前,我们很高兴地 宣布 Habana Labs 和 Hugging Face 将开展加速 transformer 模型的训练方面的合作.
与最新的基于 GPU 的 Amazon Web Services (AWS) EC2 实例相比,Habana Gaudi 加速卡在训练机器学习模型方面的性价比提高了 40%。我们非常高兴将这种性价比优势引入 Transformers 🚀.
本文,我将手把手向你展示如何在 AWS 上快速设置 Habana Gaudi 实例,并用其微调一个用于文本分类的 BERT 模型。与往常一样,我们提供了所有代码,以便你可以在自己的项目中重用它们.
我们开始吧! 。
使用 Habana Gaudi 加速卡的最简单方法是启动一个 AWS EC2 DL1 实例。该实例配备 8 张 Habana Gaudi 加速卡,借助 Habana 深度学习镜像 (Amazon Machine Image,AMI) ,我们可以轻松把它用起来。该 AMI 预装了 Habana SynapseAI® SDK 以及运行 Gaudi 加速的 Docker 容器所需的工具。如果你想使用其他 AMI 或容器,请参阅 Habana 文档 中的说明.
我首先登陆 us-east-1 区域的 EC2 控制台 ,然后单击 启动实例 并给实例起个名字 (我用的是 “habana-demo-julsimon”).
然后,我在 Amazon Marketplace 中搜索 Habana AMI.
这里,我选择了 Habana Deep Learning Base AMI (Ubuntu 20.04).
接着,我选择了 dl1.24xlarge 实例 (实际上这是唯一可选的实例).
接着是选择 ssh 密钥对。如果你没有密钥对,可以就地创建一个.
下一步,要确保该实例允许接受 ssh 传输。为简单起见,我并未限制源地址,但你绝对应该在你的帐户中设置一下,以防止被恶意攻击.
默认情况下,该 AMI 将启动一个具有 8GB Amazon EBS 存储的实例。但这对我来说可能不够,因此我将存储空间增加到 50GB.
接下来,我需要为该实例分配一个 Amazon IAM 角色。在实际项目中,此角色应具有运行训练所需的最低权限组合,例如从 Amazon S3 存储桶中读取数据的权限。但在本例中,我们不需要这个角色,因为数据集是从 Hugging Face Hub 上下载的。如果您不熟悉 IAM,强烈建议阅读这个 入门 文档.
然后,我要求 EC2 将我的实例配置为 Spot 实例 ,这可以帮我降低每小时使用成本 (非 Spot 实例每小时要 13.11 美元).
最后,启动实例。几分钟后,实例已准备就绪,我可以使用 ssh 连上它了。Windows 用户可以按照 文档 使用 PuTTY 来连接.
ssh -i ~/.ssh/julsimon-keypair.pem ubuntu@ec2-18-207-189-109.compute-1.amazonaws.com
在实例中,最后一步是拉取一个 Habana PyTorch 容器,我后面会用 PyTorch 来微调模型。你可以在 Habana 文档 中找到有关其他预构建容器以及如何构建自己的容器的信息.
docker pull \
vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610
将 docker 镜像拉到实例后,我就可以用交互模式运行它.
docker run -it \
--runtime=habana \
-e HABANA_VISIBLE_DEVICES=all \
-e OMPI_MCA_btl_vader_single_copy_mechanism=none \
--cap-add=sys_nice \
--net=host \
--ipc=host vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610
至此,我就准备好可以微调模型了.
首先,在刚刚启动的容器内拉取 Optimum Habana 存储库.
git clone https://github.com/huggingface/optimum-habana.git
然后,从源代码安装 Optimum Habana 软件包.
cd optimum-habana
pip install .
接着,切到包含文本分类示例的子目录并安装所需的 Python 包.
cd examples/text-classification
pip install -r requirements.txt
现在可以启动训练了,训练脚本首先从 Hugging Face Hub 下载 bert-large-uncased-whole-word-masking 模型,然后在 GLUE 基准的 MRPC 任务上对其进行微调.
请注意,我用于训练的 BERT 配置是从 Hugging Face Hub 获取的,你也可以使用自己的配置。此外,Gaudi1 还支持其他流行的模型,你可以在 Habana 的网页上 中找到它们的配置文件.
python run_glue.py \
--model_name_or_path bert-large-uncased-whole-word-masking \
--gaudi_config_name Habana/bert-large-uncased-whole-word-masking \
--task_name mrpc \
--do_train \
--do_eval \
--per_device_train_batch_size 32 \
--learning_rate 3e-5 \
--num_train_epochs 3 \
--max_seq_length 128 \
--use_habana \
--use_lazy_mode \
--output_dir ./output/mrpc/
2 分 12 秒后,训练完成,并获得了 0.9181 的 F1 分数,相当不错。你还可以增加 epoch 数,F1 分数肯定会随之继续提高.
***** train metrics *****
epoch = 3.0
train_loss = 0.371
train_runtime = 0:02:12.85
train_samples = 3668
train_samples_per_second = 82.824
train_steps_per_second = 2.597
***** eval metrics *****
epoch = 3.0
eval_accuracy = 0.8505
eval_combined_score = 0.8736
eval_f1 = 0.8968
eval_loss = 0.385
eval_runtime = 0:00:06.45
eval_samples = 408
eval_samples_per_second = 63.206
eval_steps_per_second = 7.901
最后一步但也是相当重要的一步,用完后别忘了终止 EC2 实例以避免不必要的费用。查看 EC2 控制台中的 Saving Summary ,我发现由于使用 Spot 实例,我节省了 70% 的成本,每小时支付的钱从原先的 13.11 美元降到了 3.93 美元.
如你所见,Transformers、Habana Gaudi 和 AWS 实例的组合功能强大、简单且经济高效。欢迎大家尝试,如果有任何想法,欢迎大家在 Hugging Face 论坛 上提出问题和反馈.
如果你想了解更多有关在 Gaudi 上训练 Hugging Face 模型的信息,请 联系 Habana .
英文原文: https://hf.co/blog/getting-started-habana 。
原文作者: Julien Simon 。
译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理.
审校/排版: zhongdongy (阿东) 。
最后此篇关于基于HabanaGaudi的Transformers入门的文章就讲到这里了,如果你想了解更多关于基于HabanaGaudi的Transformers入门的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Hive —— 入门 Hive介绍 Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一
HBase —— 入门 HBase介绍 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”
零:前端目前形势 前端的发展史 HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) ->
在本教程中,您将了解在计算机上运行 JavaScript 的不同方法。 JavaScript 是一种流行的编程语言,具有广泛的应用程序。 JavaScript 以前主要用于使网页具有交
我曾经是一个对编程一窍不通的小白,但因为对互联网世界的好奇心和求知欲的驱使,我踏入了编程的殿堂。在学习的过程中,我发现了一门神奇的编程语言——Python。Python有着简洁、易读的语法,让初学者能
嗨,亲爱的读者们! 今天我要给大家分享一些关于Python爬虫的小案例。你是否曾为了获取特定网页上的数据而烦恼过?或者是否好奇如何从网页中提取信息以供自己使用?那么,这篇文章将会给你一些启示和灵感。
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我想创建一个像https://apprtc.appspot.com/?r=04188292这样的应用程序。我对 webrtc 了解一点,但无法掌握 google app-engine。如何为 java
我刚刚开始使用 Python 并编写了一个简单的周边程序。但是,每当我在终端中键入 python perimeter.py 时,都会收到以下错误,我不知道如何解决。 >>> python perime
Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了
创建发布web项目 具体步骤: 1.在开发工具中创建一个dynamic web project helloword 2.在webContent中创建index.html文件 3.发布web应用到
如果你在 Ubuntu 上使用终端的时间很长,你可能会希望调整终端的字体和大小以获取一种良好的体验。 更改字体是一种最简单但最直观的 Linux 的终端自定义 的方法。让我
1. 前言 ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的函式组件。现在 SFS3 系统 (校园自由软件交流网学务系统) 计划的
我对 neo4j 完全陌生,我很抱歉提出这样一个基本问题。我已经安装了neo4j,我正在使用shell“localhost:7474/webadmin/#/console/” 我正在寻找一个很好的例子
我正在阅读 ios 4 的核心音频,目的是构建一个小测试应用程序。 在这一点上,我对所有 api 的研究感到非常困惑。理想情况下,我想知道如何从两个 mp3 中提取一些样本到数组中。 然后在回调循环中
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是无关紧要的,因
我下载了 GNUStep并安装了它,但是我不确定在哪里可以找到 IDE。有谁知道什么程序可以用作 GNUStep IDE/从哪里获取它们?否则,有没有人知道有关如何创建和编译基本 GNUStep 程序
我正在尝试开始使用 Apache Solr,但有些事情我不清楚。通读tutorial ,我已经设置了一个正在运行的 Solr 实例。我感到困惑的是 Solr 的所有配置(架构等)都是 XML 格式的。
请问有没有关于如何开始使用 BruTile 的文档? 我目前正在使用 SharpMap,我需要预缓存切片以加快进程 最佳答案 我今天正在研究这个:)Mapsui项目site严重依赖 SharpMap
尽我所能,我无法让 CEDET 做任何事情。 Emacs 24.3。我下载了最新的 CEDET 快照。我从他的底部(不是这样)Gentle Introduction 中获取了 Alex Ott 的设置
我是一名优秀的程序员,十分优秀!