Paperspace专精于按需高性能计算,是备受行业认可的MLOPs平台。Paperspace与Graphcore建立了新的合作关系,现在,任何Paperspace用户都可以通过Gradient Notebooks[1](一个基于web的Jupyter IDE)在几秒钟内快速获取智能处理器(IPU)技术。
这篇博文将指导您通过几个简单的步骤,在Paperspace上启动和运行Graphcore IPU。我们将以HuggingFace Optimum视觉transformer(ViT)notebooks为例向您展示如何训练您的第一个模型。我们还将为您提供Paperspace Gradient Notebooks其他功能的相关指导,以便您运行更多教程并开始建立自己的用于IPU的模型。
了解关于Graphcore与Paperspace合作的更多信息,您可以查看《Paperspace和Graphcore携手为开发者提供免费IPU》或访问Paperspace的IPU专用页面:
https://www.paperspace.com/graphcore
注册
首先,您需要确保自己已经在Paperspace创建了一个账户[2]。这是一个一键式的过程,让您即时访问预先配置好的IPU优化的运行时,且不必担心开发环境的设置。现在,您可以使用一台Graphcore IPU-POD16经典系统,每次时长六小时,次数不限。该系统由4个IPU-M2000系统组成,共有16个IPU芯片。
IPU是一种全新的大规模并行处理器,专为人工智能和机器学习应用而设计。每个IPU有1472个强大的处理器内核,可运行近9000个独立的并行程序线程。Paperspace上提供的IPU-POD16经典系统可以为您提供4 petaFLOPS的人工智能计算,使其成为该平台上最强大的免费人工智能硬件。
启动您的Notebook运行时
一旦登录,点击工作区的创建项目(Create a project)按钮。该项目可以让您访问各种MLOps功能,最重要的是,它能支持您启动一个Gradient Notebook。IDE会处理虚拟机的配置以及docker容器、Poplar SDK和代码库的设置。
在notebook创建视图中,您可以在选项中选择一个IPU优化的运行时,如Hugging Face Optimum、PyTorch和TensorFlow 2 IPU Experience。启动notebook会加载预先配置好的容器和notebook,并处理好内部的一切,以便您直接跳到运行代码。
在这种情况下,我们将选择IPU上的Hugging Face运行时。该运行时使用来自官方Graphcore Docker Hub[3]的PyTorch-Jupyter容器[4],确保Poplar SDK和PyTorch库已经预装,并与Paperspace里的IPU系统兼容。该运行时还加载了一个甄选的notebook存储库,并处理了各种环境和数据配置,以优化易用性,让您专注于了解IPU和模型开发。
启动虚拟机需要几分钟时间。一旦完成,展开get-started文件夹并打开ViT指导训练notebook。您可以跟着notebook一步一步地完成ViT模型的数据处理、训练和评估。我们将介绍有关在Gradient中用这个notebook可以实现的内容的一些亮点。
我们用作演示的notebook将向您展示如何预处理一个广泛使用的胸部X射线大型数据集,并在这个数据集上运行HuggingFace Optimum中的ViT模型。这是一个很好的例子来说明您在使用IPU和Hugging Face Optimum开发自己的模型时经常会遇到的工作流程类型。关于这个具体的ViT实现(和一般的ViT模型)的更多背景,请查看《深入探讨:Hugging Face Optimum Graphcore上的视觉transformer》。
您不需要为了运行ViT Notebook下载胸部X射线数据集:我们已经在/graphcore/chest-xray-nihcc中提供了该数据集,以及其他在/graphcore的运行时中使用的有用的数据集和预编译的可执行文件。所有IPU的运行时都可以访问这个数据文件夹。
Paperspace Gradient是一个超强的MLOps平台,支持您更快地完成模型开发和部署的生命周期。它最重要的功能之一是数据存储。当运行您的代码需要生成或下载大量数据时,我们建议您将其存储在/tmp文件夹中,以免充塞您的本地数据存储限制。
在Gradient中运行IPU,可以在免费层中获得初始10GB的数据存储(比其他运行时多5GB),并且有获得更多免费存储的选项。此外,在Gradient的付费计划中,还为用户提供了一系列其他的存储选项。如果您需要永久和可共享的存储,可以通过Paperspace Datasets使用高性能数据存储,它可以让您在项目的所有运行时中保存和访问数据。
训练模型
在IPU上训练ViT模型,我们需要使用IPUTrainer,这需要和原来的Transformer Trainer[5]相同的arguments,并和指定IPU上编译和执行行为的IPUConfig目标协同工作。运行这个notebook将包括下载通过Graphcore/vit-base-ipu提供的IPUConfig,使用google/vit-base-patch16-224-in21k中的预训练vit检查点模型卡,以及使用胸部X射线数据集对其进行微调。这让您可以使用优化的运行时配置在IPU中运行您的训练。
该PyTorch源代码被编译在一个图程序中,规定了这个程序能够如何在IPU硬件上运行。执行这个编译步骤的时间将取决于模型的复杂性。
为节省时间,可以加载预编译执行图,免除模型再编译的需求。您可以查看再编译和缓存[6]中的文件,来了解这是如何实现的。
我们为Paperspace中我们的notebook示例的一些配置提供了可执行文件。没有预编译文件或由于模型中的变化,它必须要再编译时,这个步骤可能需要几分钟。
在ROC(receiver operating characteristic)曲线(AUC_ROC)下,我们为该区域实现了一个自定义的矩阵。由于其对于分类不平衡不敏感,并且易于解释,它成为了一个在多标签分类任务中常用的性能矩阵。在完成训练和评估后,您可以看到对于这个14项分类的多标签分类任务,跨越3个epochs(时期)的验证AUC_ROC得分为0.7811。
用高级选项启动运行时
现在您可以在Paperspace Gradient中运行您的第一个Notebook了,您可以点击高级选项(Advanced options)来查看预先加载的配置,并针对您自己的使用对其进行修改。
查看Hugging Face Optimum运行时,您可以通过高级选项看到,它被配置为加载gradient-ai/Graphcore-Huggingface存储库,并通过Graphcore Docker Hub的PyTorch docker容器运行,其中包含所有必要的库和Poplar SDK。
您可以很容易地修改运行时的高级选项,以便加载您自己的资源库,并在不同的Docker Image组合中运行它。这个例子展示了您可以如何改变资源库字段,以使用Graphcore应用示例存储库[7],并从Graphcore的官方Docker Hub[8]版本中选择一个TensorFlow 1 Image。
请注意,在手动设置高级选项时,您需要将IPU主机服务器操作系统(本例中为AMD)与正确的Docker操作系统标签(tf1-amd)相匹配。
这应该可以让您在该Notebook IDE中运行Graphcore应用示例存储库中的任何TensorFlow 1代码。
高级CLI任务
虽然Gradient Notebook专注于提供一个笔记本样式的界面,但它是一个完整的IDE,可以访问终端。这个强大的功能可以让您运行Graphcore的示例和教程中提供的其余脚本。
点击终端图标,启动一个shell界面。在那里,您可以通过打字键入,来复制Graphcore公布的基准或运行我们的教程。
下一步
您已经成功地运行了最初的几个notebooks,接下来,您可以通过我们其他的一些教程来了解有关如何在IPU中进行开发的更多信息。
  • 将一个简单的PyTorch模型移植到IPU上[9]
  • 用流水线在多个IPU上运行一个TensorFlow模型[10]
  • 使用复制加快在TensorFlow中的训练[11]
  • 如何在PyTorch中使用半精度和混合精度[12]
  • 移植TensorFlow 2模型的快速入门[13]
  • Graphcore教程[14]
  • 云端的IPU[15]
[1]https://www.paperspace.com/gradient/notebooks
[2]https://console.paperspace.com/signup
[3]https://hub.docker.com/u/graphcore
[4]https://hub.docker.com/r/graphcore/pytorch-jupyter
[5]https://huggingface.co/docs/transformers/main_classes/trainer
[6]https://docs.graphcore.ai/projects/poptorch-user-guide/en/latest/overview.html#precompilation-and-caching
[7]https://github.com/graphcore/examples
[8]https://hub.docker.com/u/graphcore
[9]https://github.com/graphcore/tutorials/tree/master/tutorials/pytorch/tut1_basics
[10]https://github.com/graphcore/tutorials/tree/sdk-release-2.4/tutorials/tensorflow1/pipelining
[11]https://github.com/graphcore/tutorials/tree/sdk-release-2.4/feature_examples/tensorflow/replication
[12]https://github.com/graphcore/tutorials/tree/sdk-release-2.4/tutorials/pytorch/tut3_mixed_precision
[13]https://docs.graphcore.ai/projects/porting-tf2-models-quick-start/en/latest/
[14]https://github.com/graphcore/tutorials
[15]https://www.graphcore.cn/ipus-in-the-cloud/
获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。
Graphcore中国官网
Graphcore官方微信
Graphcore微博创新社区
Graphcore知乎创新社区
点击阅读原文,查看英文blog。
继续阅读
阅读原文