Paperspace专精于按需高性能计算,是备受行业认可的MLOPs平台。Paperspace与Graphcore建立了新的合作关系,现在,任何Paperspace用户都可以通过Gradient Notebooks(一个基于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创建了一个账户。这是一个一键式的过程,让您即时访问预先配置好的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的PyTorch-Jupyter容器,确保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相同的arguments,并和指定IPU上编译和执行行为的IPUConfig目标协同工作。运行这个notebook将包括下载通过Graphcore/vit-base-ipu提供的IPUConfig,使用google/vit-base-patch16-224-in21k中的预训练vit检查点模型卡,以及使用胸部X射线数据集对其进行微调。这让您可以使用优化的运行时配置在IPU中运行您的训练。

该PyTorch源代码被编译在一个图程序中,规定了这个程序能够如何在IPU硬件上运行。执行这个编译步骤的时间将取决于模型的复杂性。
为节省时间,可以加载预编译执行图,免除模型再编译的需求。您可以查看再编译和缓存中的文件,来了解这是如何实现的。
我们为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应用示例存储库,并从Graphcore的官方Docker Hub版本中选择一个TensorFlow 1 Image。

请注意,在手动设置高级选项时,您需要将IPU主机服务器操作系统(本例中为AMD)与正确的Docker操作系统标签(tf1-amd)相匹配。
这应该可以让您在该Notebook IDE中运行Graphcore应用示例存储库中的任何TensorFlow 1代码。
高级CLI任务
虽然Gradient Notebook专注于提供一个笔记本样式的界面,但它是一个完整的IDE,可以访问终端。这个强大的功能可以让您运行Graphcore的示例和教程中提供的其余脚本。
点击终端图标,启动一个shell界面。在那里,您可以通过打字键入,来复制Graphcore公布的基准或运行我们的教程。

下一步
您已经成功地运行了最初的几个notebooks,接下来,您可以通过我们其他的一些教程来了解有关如何在IPU中进行开发的更多信息。