0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在OCI Ampere A1上启动计算密集AI应用程序

科技绿洲 来源:安晟培半导体 作者:安晟培半导体 2022-05-01 09:05 次阅读

本文将向您展示如何在 OCI Ampere A1 上准备和启动计算密集的 AI 应用程序。

使用 Ampere A1,我们将发挥 Ampere Altra 处理器和 Ampere AIO 一流的 AI 推理性能。

我将使用此 Github 中的演练/脚本(请注意,这些脚本也将在我们将创建的实例上)。此外,如果您想继续,您需要 Ampere A1 实例 - 可以在 OCI 上免费创建。

创建免费的 Ampere VM

首先,我将创建 Ampere A1 的单个实例。该实例使用 VM.Standard.A 1.Flex 并具有 4 个 OCPU 24 GB 内存。

“根据 Oracle 的定价页,Oracle CPU (OCPU) 计费单元实际上是处理器的一个物理内核。一个开启超线程的 CPU,对应的是两个硬件执行线程,即所谓的 vCPU。而对于 A1 实例,一个 OCPU 就是一个 vCPU。”

打开导航菜单并选择计算和实例以创建计算实例,您可以选择 Running Hugo 文章中使用的相同的隔层或在实例页面上创建新隔层。

单击创建实例按钮打开创建页面,创建新实例。创建页面上有多个部分。但是,我们只会更改其中的几个。

首先,您可以将随机生成的名称更改为更易于使用的名称,例如 ai- vm。以下内容是 Placement——我们可以在此处保留默认值,但您可以为实例选择不同的可用性域(AD) 和故障域(FD)。最后,将默认设置 Always Free-eligible 可用性域。

选择图像和形状

下一部分称为 Image and Shape(图像和形状),我们将在这里选择实例形态(实例形态是 GCP 中的机器类型和 Azure 中的 VM 大小)和计算实例的操作系统映像。

1

单击 Change shape 按钮以选择不同的 VM 实例形态,确保您已选择虚拟机的实例类型。您可以在下一行中选择形态系列。我们正在寻找包含基于 ARM 的处理器和名为 VM.Standard.A 1.Flex 的形态名称的 Ampere 系列(它应该是此视图中唯一可用的形状)

2

选择 VM.Standard.A 1.Flex ,将 OCPU 数量调整为 4,并将内存量调整为 24 GB。完成此项操作后,我们将能够永久免费使用这一规格

3

单击 Select shape 按钮以确认选择。

4

单击 Change image 按钮。然后让我们为形状获取正确的镜像。

poYBAGJZKIOAWjoRAAAfZfkhc8w217.png

选择镜像

5

在下拉菜单中选择 Partner Image 。然后在搜索框中,输入 Ampere 。您将看到可用于 Ampere A1 形状的可用镜像。

pYYBAGJZKJCAAiK6AABf3t9JgYU488.png

Ampere Tensorflow 镜像

6

选中Tensorflow 2.7 – Ampere AI Optimizer – Ubuntu 20.04 框和以下复选框以同意“Terms of Use(使用条款)”。然后,单击 Select Image 按钮。您应该会看到选定的 shape 和 image 框,如下图所示。

pYYBAGJZKOCAeqCuAABWJhQi9TY643.png

Tensorflow 2.7 – Ampere AI Optimizer – 已选择 Ubuntu 20.04 镜像

添加 SSH 密钥

我们还想稍后使用 SSH 密钥连接到实例。您可以选择创建新的 SSH 密钥对或上传/粘贴一个或多个现有公钥文件。

如果您正在生成新的 SSH 密钥对,请确保单击 Save Private Key 按钮以保存生成的密钥。

“注意:您必须将 SSH 密钥文件的权限设置为 400。您可以运行 chmod 400 < keyfile > 来执行此操作。”

创建 AI 实例

我们不会更改任何其他设置,因此让我们单击 Create 按钮来创建实例。

pYYBAGJZKQOAdoKxAAB9Lfg4b9I894.png

创建 AI 实例

几分钟后,OCI 会创建实例,并且实例的状态会从配置变为运行。

连接到实例

要连接到实例,我们将使用实例的公共 IP 地址和我们设置的 SSH 密钥。

您可以从实例页面获取公共 IP 地址,然后使用 ubuntu 用户名通过 SSH 连接到机器。

$ ssh -i ubuntu@

pYYBAGJZKRKAFnr-AACZONU6_A8393.png

AI虚拟机登录画面

请注意,您可能会看到重新启动 VM 的消息 - 为此,只需运行 sudo reboot 并在一分钟后再次登录。

运行 TensorFlow-AIO示例

TensorFlow 是一个用于机器学习的开源平台。它拥有一系列工具、库和资源,可让您轻松构建和部署基于 ML 的应用程序。

我们在创建实例时选择的 TensorFlow 镜像包含简单的 TensorFlow 示例。为了准备运行示例,让我们先下载模型:

$ cd ~/aio-examples

$ ./download_models.sh

“请注意,将所有模型下载到 VM 需要几分钟时间。”

模型文件被下载到 ~/ aioi -examples 和多个文件夹(例如classificationsobject_detection)。这些模型用来执行一些常用的 AI 推理计算机视觉任务,如图像分类和对象检测

让我们从一个使用 Tensorflow resnet_50_v15 模型进行分类的示例开始:

“resnet50 模型是什么?这是一个流行的模型,是 MLCommon 基准组件之一。您可以在这里读更多关于它的内容 ”

cd classifications/resnet_50_v15

“对于 Ampere A1 实例,一个 OCPU 对应一个物理的 Ampere Altra处理核心。它不同于 AMD (E3/E4)或 Intel Standard3(S3)中,一个 OCPU 对应一个超线程(HT)内核(一个物理内核对应两个 HT 内核)。”

我们使用4个 Altra 内核来运行这个示例。同时选择 FP32(全精度浮点)模型来运行此示例:

export AIO_NUM_THREADS=4

python run.py -m resnet_50_v15_tf_fp32.pb -p fp32

“在内存中,FP32 或全精度浮点是一种 32 位的数字格式。”

poYBAGJZKSeAPhUoAABuLHhLNxs902.png

可以看到,使用四个核心,resnet_50_v15 每秒可以处理 19.23 张图像(ips)。

AIO 运行半精度 (FP16) 模型

Ampere A1 在硬件中提供对 FP16 计算的原生支持。半精度(FP16)模型可提供比 FP32 多 2 倍的额外性能,同时也不会影响模型的精确度。AMD E4 和 Intel S3 都没有对 FP16 提供原生支持,因此运行 FP16 会异常缓慢。

“FP16 是一种半精度浮点计算机数字格式,在内存中占用 16 位。”

让我们尝试在 Ampere A1 上运行 FP16:

python run.py -m resnet_50_v15_tf_fp16.pb -p fp16

ubuntu@ai-vm:~/aio-examples/classification/resnet_50_v15$ python run.py -m resnet_50_v15_tf_fp16.pb -p fp16

/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.8) or chardet (3.0.4) doesn't match a supported version!

warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "

Running with 4 threads

Top-1 accuracy = 0.800

Top-5 accuracy = 1.000

Accuracy figures above calculated on the basis of 5 images.

Latency: 28 ms

Throughput: 36.29 ips

使用 FP16 时,我们每秒可以处理 36.29 张图像。

将数字与 AMD 和 Intel 实例(4 个 vCPU)进行比较

我们可以通过在 AMD 和 Intel Flex 形状上运行相同的脚本来比较这些数字。运行此模型和应用程序每秒的形状和图像的成本如下表所示。

对于 FP32 resnet_50_v15 模型:

poYBAGJZKUSAHi14AAA5f4gzQp0293.png

对于 FP16 resnet_50_v15 模型:

pYYBAGJZKXyACeTZAAAjPq-osZU816.png

在相同的成本下,运行 resnet_50_v15 FP32 模型的 Ampere A1 形状可提供超过 AMD 最佳 E4 实例 1.5 倍的性能,以及超过英特尔Standard3实例 2 倍的性能。

利用 Ampere Altra 对 FP16 的原生支持,在相同的成本下,Ampere A1 形状达到的性能超过AMD E4 的 2.8 倍和Intel Standard3的 3.8 倍

此外,Ampere A1形状的性能比 AMD/Intel 更好。例如,如果使用更高核心数的 VM,与运行 FP32 模型的 E4 相比,Ampere A1 可提供额外 2 倍的性能增益。

Jupyter Notebook 的可视化示例

首先,让我们在 VM 上启动 Jupyter Notebook 服务器。

Jupyter Notebook 通常用于在浏览器上轻松实现编辑、调试和可视化 Python 应用程序的需求。我们使用的 VM 图像包括一个Jupyter Notebook 示例。

cd ~/.aio-examples./start_notebook.sh

buntu@ai-vm:~/aio-examples$ ./start_notebook.shOn your local system please open a new terminal window and run:ssh -N -L 8080:localhost:8080 -i ./your_key.key your_user@xxx.xxx.xxx.xxx

After that open one of the links printed out below in your local browser

[I 23:08:01.841 NotebookApp] Writing notebook server cookie secret to /home/ubuntu/.local/share/jupyter/runtime/notebook_cookie_secret[I 23:08:02.270 NotebookApp] Serving notebooks from local directory: /home/ubuntu/aio-examples

[I 23:08:02.270 NotebookApp] Jupyter Notebook 6.4.8 is running at:

[I 23:08:02.270 NotebookApp] http://localhost:8080/?token=fd98a68431793485bb9dbf8590ad6f571dbabbfa96757b37

[I 23:08:02.270 NotebookApp] or http://127.0.0.1:8080/?token=fd98a68431793485bb9dbf8590ad6f571dbabbfa96757b37

[I 23:08:02.270 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[C 23:08:02.274 NotebookApp]

To access the notebook, open this file in a browser: file:///home/ubuntu/.local/share/jupyter/runtime/nbserver-1367-open.html

Or copy and paste one of these URLs: http://localhost:8080/?token=fd98a68431793485bb9dbf8590ad6f571dbabbfa96757b37 or http://127.0.0.1:8080/?token=fd98a68431793485bb9dbf8590ad6f571dbabbfa96757b37

接下来,我们将通过本地主机打开一个用于浏览器连接的通道。在第二个终端窗口中,运行以下命令:

ssh -N -L 8080:localhost:8080 -i ./your_key.key your_user@xxx.xxx.xxx.xxx

然后,使用上一步中的链接在浏览器中打开Jupyter Notebook(例如

http://localhost:8080/?token=....)。

您会看到如下图所示的页面。

poYBAGJZKYeAcDAFAACCQAjiWaE386.png

连接到Ampere 上的Jupyter服务器

我们将使用 object_detection 文件夹中的对象检测示例。双击文件夹的名称,然后单击 examples.ipynb 项目。

单击“运行”按钮来逐步执行该示例。您会看到对象检测的结果以及 AIO 对 Tensorflow 的加速情况。

您会注意到启用或禁用 AIO 时的延迟差异。例如,当以 FP16 精度运行已启用 AIO 的模型时,延迟约为 44 毫秒。在禁用 AIO 的情况下运行相同的模型,延迟为 3533 ms!这是一个明显的区别。

pYYBAGJZKZGAbFW8AAIGhukSZEw261.png

运行示例

您也可以用相同的方式运行分类示例——单击 classification文件夹,然后单击 examples.ipynb 项目。

poYBAGJZKZqAKls2AAERAgJ9I_M464.png

分类示例

结论

恭喜!您已完成在 Ampere A1 形状上运行通用 AI 应用程序的全过程。

运行这些示例相当简单——不用进行任何转换或更改应用程序代码就能在 Ampere A1 上运行 API 应用程序。

TensorFlow 等的标准框架会自动加速。我们可以很轻松地以相同的成本达到比其他形状高 2 到 4 倍的性能增益。

您可以在 Github repo 中查看本文中使用的脚本——这些脚本与我们在所使用的示例图像上自动下载的脚本相同。

审核编辑:彭菁
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    26410

    浏览量

    264016
  • 应用程序
    +关注

    关注

    37

    文章

    3133

    浏览量

    56365
  • 虚拟机
    +关注

    关注

    1

    文章

    854

    浏览量

    27366
收藏 人收藏

    评论

    相关推荐

    图中的A1是什么?

    A1 指的是 引脚本身高度还是引脚倾斜的高度?请各位赐教。。
    发表于 07-30 11:11

    何在ML605板从Platform-flash-XL自动运行应用程序的教程?

    是否有关于如何在ML605板从Platform-flash-XL自动运行应用程序的教程?在启动时,我想让我的应用程序(简单的hello-w
    发表于 09-12 09:54

    何在PC测试固件应用程序

    困难:在USB控制中心应用中,压入传输数据为大容量输入或输出导致错误代码997。批量输出传输批量传输失败,错误代码:997传输中的散装散装散装错误代码:997这个错误是什么?我如何克服它?你是如何在PC测试固件应用程序的?谢谢
    发表于 10-11 06:13

    计算密集型的程序简析

    密集型任务提问:什么类型的程序适合在GPU运行?计算密集型的程序。所谓
    发表于 09-07 06:14

    何在AVRX编写应用程序

    AVRX系统具有哪些特点应用?如何在AVRX编写应用程序
    发表于 09-26 09:13

    如何让自己的应用程序自动启动

    1.通过/Linuxrc脚本直接启动Linux内核一旦开始执行,它将通过驱动程序来初始化所有硬件设备,这个初始化过程可以在启动时的PC显示器
    发表于 12-21 06:29

    何在NFC Tap iOS应用程序上输入密码?

    当键盘盖住操作按钮时,如何在 NFC Tap iOS 应用程序上输入密码?我正在尝试使用适用于 iOS 的 NFT Tap 对 ST25TA02KB 进行密码保护,但遇到了一些困难。首先,它给我一个
    发表于 12-09 07:10

    STM32MP157f-K2如何自动启动A7应用程序和M4固件并禁用演示?

    了问题,我不得不重新刷板。我的问题有两个,我将不胜感激任何建议(1) 如何在板载 LCD 屏幕打开 Linux shell 而不是使用 STLink 将其映射到我的计算机(2) 如何
    发表于 12-28 06:40

    linux的X-CUBE-AI扩展包中缺少stm32ai应用程序怎么解决?

    ,问题是它不存在。根据 command_line_interface.html 中的文档,stm32ai 应用程序应该在 X-CUBE-AI/5.2.0/Utilities/linux 中找到。但是
    发表于 01-09 07:12

    何在手机上打开/启动应用程序

    您希望如何在手机上打开/启动应用程序?您会手动启动还是通过语音命令启动它?
    发表于 05-04 08:56

    何在uclinux中添加自己应用程序的详细过程

    何在uclinux中添加自己应用程序的详细过程
    发表于 03-28 09:48 20次下载

    AI应用程序在许多行业中都已启动并运行

    尽管AI应用程序在许多行业中都已启动并运行,但是拥有高级AI执行人员的公司数量却少得令人惊讶-仅IBM和Forbes Insights 最近调查的公司中有5%拥有首席人工智能官(CAI
    的头像 发表于 07-22 15:18 2136次阅读

    Ampere收购OnSpecta,加速对云原生应用程序AI推理

    据 IDC 研究显示,到 2024 年,AI 服务器市场市值预计将超 260 亿美元,年增长率将达 13.7%。在中心和边缘的基础架构中,Ampere 的客户正在寻找解决方案,以管理 AI 推理任务成本和不断增长的需求。
    发表于 08-05 15:36 810次阅读

    安晟培半导体通过AI推理应用程序进一步增强 Ampere Altra 的性能

    中国,北京(2021 年 8 月 5 日)——安晟培半导体科技有限公司(Ampere Computing)日前宣布收购AI技术初创公司 OnSpecta,该收购将助力 Ampere 通过 AI
    的头像 发表于 08-18 11:38 3293次阅读

    嵌入式Linux中让应用程序自动启动

    在很多嵌入式系统中,由于可用资源较少,常常在系统启动后就直接让应用程序自动启动,以减少用户操作和节省资源。如何让自己的应用程序自动启动呢?
    发表于 10-28 11:04 0次下载