如果你希望从一开始就训练最先进的模型,你可以在IPU上启动并运行我们易于使用的BERT微调快速入门notebook,无需离开Spell的Web控制台。
如果想了解更多有关IPU编程以及如何使用我们的Poplar软件的信息,可以从我们的教程存储库[1]中访问一系列简单的实操代码,让你快速上手:
  • 将一个简单的PyTorch模型移植到IPU[2]
  • 使用流水线在多个IPU上运行TensorFlow模型[3]
  • 使用复制来加速TensorFlow中的训练[4]
  • 如何在PyTorch中使用半精度和混合精度[5]
  • 使用Jupyter Notebook中的IPU[6]
现在使用Spell,可以免费评估IPU:运行一个由Spell支持的应用示例[7],根据自身需求调整一个应用示例,或者测试全新的项目。
从零到SOTA仅需几分钟
在Spell上开始使用IPU非常简单。让我们按照以下步骤直接运行一个SOTA模型,例如BERT:
  1. 创建Workspace
  2. 初始化BERT代码
  3. 设置Poplar SDK环境
  4. 在IPU上运行BERT微调notebook
创建Workspace
创建Spell帐户可以让你通过Workspaces免费获取IPU计算。Workspaces是一种有管理的notebook服务,其中包含文件、notebook和其他相关资源,可以使用Jupyter Notebook或JupyterLab运行。
可以通过使用Web控制台Workspaces区域右上角的“创建新Workspace”按钮创建Workspaces。系统会要求你为Workspace命名,在这个例子中我们将其称为“BERT”。
初始化BERT代码
创建Workspace时,你可以选择使用GitHub存储库中的代码对其进行初始化。BERT微调快速入门notebook包含在Graphcore的教程存储库[1]中。
设置Poplar SDK环境
然后,必须进行环境设置,例如机器类型、机器学习框架、要求和pip软件包。
选择IPUx16选项,这会告诉Spell Workspace在IPU POD16的实例上运行代码。为了在IPU上运行工作负载,我们必须配置POD中IPU与主机之间的通信。幸运的是,当你选择IPU选项时,Spell将设置基础设施和作业执行的过程加以抽象化。
为了将Poplar SDK加载到Workspaces,必须选择“自定义docker镜像”作为框架,然后指向graphcore的Poplar SDK Docker镜像之一。我们将在本指南中使用 graphcore/pytorch镜像,但你也可以从Graphcore Dockerhub[8]上提供的三个机器学习框架(即 Tensorflow、PyTorch、Poplar)中进行选择,如下所示:
  • graphcore/pytorch
  • graphcore/tensorflow
  • graphcore/poplar
默认情况下,从框架存储库中提取并下载为AMD主机处理器编译的最新版本的SDK。可以查看Docker Image Tags[9]以获取有关特定SDK构建和处理器的更多信息。
一旦完成设置配置步骤,就可以启动notebook服务器,其中将包含BERT教程代码、Poplar SDK和必要的IPU配置设置。创建Workspace会自动启动notebook视图,然后它将显示为Workspaces列表中的一个条目。
在IPU上运行BERT微调notebook
导航到文件夹tutorials/pytorch/tut_finetuning_bert,可以找到BERT微调教程。
BERT微调notebook有额外的软件包要求。通过打开终端并运行“pip install-r requirements.txt”或在jupyter notebook的单元格中运行它,就可以安装 requirements.txt中列出的需要的软件包。
该notebook将演示如何在被命名为SQuAD的问答任务中对预训练的BERT模型(使用Wikipedia数据集在IPU上预训练)进行微调。
逐步浏览BERT微调notebook,了解实现IPU硬件性能最大化的编程原理,例如:
  • 流水线
  • 数据并行性
  • 重新计算检查点
  • 复制张量分片
  • 半精度
完成notebook后,你将在16个IPU上的2x8流水线配置上微调BERT模型,SQuADv1 的验证分数如下:

你可以为推理作业保存和导出微调模型。notebook在第6节提供了一个使用微调模型进行推理的示例。你可以使用提供的代码打印问答任务的答案。
资源
如何在Spell Workspaces中运行BERT 微调notebook[10]
在Spell中运行Graphcore应用程序(BERT、ResNet-50、EfficientNet)[11]
文档:开始在Spell上使用IPU[12]
Spell Workspace网站[13]
Spell x Graphcore IPU集成教程[14]
Graphcore GitHub[15]
Graphcore开发者门户[16]
参考资料
[1]https://github.com/graphcore/tutorials
[2]https://github.com/graphcore/tutorials/tree/master/tutorials/pytorch/tut1_basics
[3]https://github.com/graphcore/tutorials/tree/sdk-release-2.4/tutorials/tensorflow1/pipelining
[4]https://github.com/graphcore/tutorials/tree/sdk-release-2.4/feature_examples/tensorflow/replication
[5]https://github.com/graphcore/tutorials/tree/sdk-release-2.4/tutorials/pytorch/tut3_mixed_precision
[6]https://github.com/graphcore/tutorials/tree/master/tutorials/standard_tools/using_jupyter
[7]https://github.com/graphcore/examples
[8]https://hub.docker.com/u/graphcore
[9]https://docs.graphcore.ai/projects/poplar-docker/en/latest/user_guide.html
[10]https://github.com/spellml/Graphcore-examples/tree/main/tutorials/pytorch/bert
[11]https://github.com/spellml/Graphcore-examples/blob/main/README-Apps.md
[12]https://spell.ml/blog/using-graphcore-ipus-on-spell-YfwEzBEAACQA2EyX
[13]https://spell.ml/graphcore
[14]https://github.com/spellml/Graphcore-examples
[15]https://github.com/graphcore
[16]https://www.graphcore.ai/developer
获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。
Graphcore中国官网
Graphcore官方微信
Graphcore微博创新社区
Graphcore知乎创新社区
点击阅读原文,查看英文blog。
继续阅读
阅读原文