启动带有 AWS Neuron 的 DLAMI 实例 - 深度学习 AMI
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

启动带有 AWS Neuron 的 DLAMI 实例

最新的 DLAMI 已可与 AWS Inferentia 结合使用,并且附带了 AWS Neuron API 程序包。要启动 DLAMI 实例,请参阅 启动和配置 DLAMI。 准备好 DLAMI 后,按照此处的步骤操作,确保您的 AWS Inferentia 芯片和 AWS Neuron 资源处于活动状态。

升级 Neuron 程序包

连接到您的 Inf1 实例后,使用以下命令升级您的 Neuron 程序包。

对于 Amazon Linux 2,运行:

sudo yum install aws-neuron-runtime-base sudo yum install aws-neuron-runtime sudo yum install aws-neuron-tools sudo yum install tensorflow-model-server-neuron

对于 Ubuntu Linux,运行:

sudo apt-get update sudo apt-get install aws-neuron-runtime-base sudo apt-get install aws-neuron-runtime sudo apt-get install aws-neuron-tools sudo apt-get install tensorflow-model-server-neuron

验证您的实例

在使用您的实例之前,验证该实例是否已针对 Neuron 进行正确的设置和配置。

确定 AWS Inferentia 设备

要确定实例上的 Inferentia 设备数量,请使用以下命令:

neuron-ls

如果您的实例已附加了 Inferentia 设备,则输出将如下所示:

... +--------------+---------+--------+-----------+-----------+------+------+ |   PCI BDF    | LOGICAL | NEURON |  MEMORY   |  MEMORY   | EAST | WEST | |              |   ID    | CORES  | CHANNEL 0 | CHANNEL 1 |      |      | +--------------+---------+--------+-----------+-----------+------+------+ | 0000:00:1f.0 |       0 |      4 | 4096 MB   | 4096 MB   |    0 |    0 | +--------------+---------+--------+-----------+-----------+------+------+

提供的输出来自于 INF1.2xlarge 实例。第一列中显示 PCI 总线设备功能 ID。第二列中显示分配给该设备的逻辑 ID。此逻辑 ID 在 Neuron 运行时守护程序 (neuron-rtd) 配置期间使用。第三列中显示可用的 NeuronCores 数量。最后两列中显示与任何其他 Inferentia 设备之间的连接。由于这是单个 Inferentia 实例,因此这两列是空的。

nr_hugepages

vm.nr_hugepages 是一个系统范围的配置,用于管理内存中除标准的 4KB 页面大小之外的大内存页。对于 Neuron API 来说,此配置非常重要,因为它使用大内存页。运行以下命令,查看此实例的 vm.nr_hugepages 设置:

grep HugePages_Total /proc/meminfo | awk {'print $2'}

每个 AWS Inferentia 设备的最低 vm.nr_hugepages 要求为 128。 

Neuron 运行时守护程序 (neuron-rtd)

当您启动任意 Inf1 实例时,Neuron 运行时守护程序 (neuron-rtd) 会自动启动。 可以使用以下命令验证 neuron-rtd 是否处于活动状态:

sudo systemctl status neuron-rtd

您的输出应类似于以下内容:

● neuron-rtd.service - Neuron Runtime Daemon    Loaded: loaded (/usr/lib/systemd/system/neuron-rtd.service; enabled; vendor preset: disabled)    Active: active (running) since Thu 2019-11-14 09:53:47 UTC; 3min 0s ago  Main PID: 3351 (neuron-rtd)     Tasks: 14    Memory: 11.6M    CGroup: /system.slice/neuron-rtd.service            └─3351 /opt/aws/neuron/bin/neuron-rtd -c /opt/aws/neuron/config/neuron-rtd.config Nov 14 09:53:16 ip-172-31-23-213.ec2.internal systemd[1]: Starting Neuron Runtime Daemon... Nov 14 09:53:18 ip-172-31-23-213.ec2.internal neuron-rtd[3351]: [NRTD:ParseArguments] Using all the BDFs in the ...on! Nov 14 09:53:18 ip-172-31-23-213.ec2.internal nrtd[3351]: [NRTD:krtd_main] krt build using:1.0.3952.0 Nov 14 09:53:18 ip-172-31-23-213.ec2.internal nrtd[3351]: [TDRV:reset_mla] Resetting 0000:00:1f.0 Nov 14 09:53:47 ip-172-31-16-98.ec2.internal nrtd[3351]: [TDRV:tdrv_init_one_mla_phase2] Initialized Inferentia...1f.0 Nov 14 09:53:47 ip-172-31-16-98.ec2.internal neuron-rtd[3351]: E1114 09:53:47.511852663    3351 socket_utils_com...65} Nov 14 09:53:47 ip-172-31-16-98.ec2.internal systemd[1]: Started Neuron Runtime Daemon. Nov 14 09:53:47 ip-172-31-16-98.ec2.internal nrtd[3351]: [NRTD:RunServer] Server listening on unix:/run/neuron.sock

有时,您可能需要启动和停止 neuron-rtd。

要启动 neuron-rtd,请使用以下命令:

sudo systemctl restart neuron-rtd

要停止 neuron-rtd,请使用以下命令:

sudo systemctl stop neuron-rtd

NeuronCore 组

NeuronCores (NC) 是 Inferentia 设备中的四个执行单元。多个 NC 可以结合起来,构成一个 NeuronCore 组 (NCG)。Neuron 框架层自动创建一个默认的 NeuronCore 组。要查看可用 NCG 的列表,请使用以下命令:

neuron-cli list-ncg

输出中将显示活动的 NCG,如下所示:

Device 1 NC count 4 +-------+----------+--------------------+----------------+ | NCG ID| NC COUNT | DEVICE START INDEX | NC START INDEX | +-------+----------+--------------------+----------------+ |     1 |        1 |                  0 |              0 | |     2 |        1 |                  0 |              1 | |     3 |        2 |                  0 |              2 | +-------+----------+--------------------+----------------+

如果尚未配置 NCG,则该命令将返回以下输出:

No NCG Found

如果需要卸载所有模型并且删除由框架创建的所有 NCG,请使用以下命令:

neuron-cli reset

列出模型

可以将模型加载到 NCG 中。可以将多个模型加载到单个 NCG 中,但只有一个模型可以处于 STARTED 状态。只能对处于 STARTED 状态的模型运行推理操作。

要查看已加载到 NCG 中的所有模型,请使用以下命令: 

$ neuron-cli list-model

输出中将显示已加载到 NCG 中的模型,如下所示:

Found 3 model 10003 MODEL_STATUS_LOADED 1 10001 MODEL_STATUS_STARTED 1 10002 MODEL_STATUS_STARTED 1

输出中的 10001 和 10002 是 NCG 中已加载的模型的唯一标识符。如果尚未将任何模型加载到 NCG 中,将会看到以下输出:

Found 0 models

查看资源使用量

对于已加载到 NCG 中的每个模型,都会消耗主机和设备上的内存量,并且会占用一定百分比的 NeuronCore。 可通过运行以下命令来查看 NCG 使用量:

neuron-top

输出中将显示 NCG 使用量,如下所示:

neuron-top - 2019-11-13 23:57:08 NN Models: 3 total, 2 running Number of VNCs tracked: 2 0000:00:1f.0 Utilizations: Neuron core0 0.00, Neuron core1 0.00, Neuron core2 0, Neuron core3 0, DLR Model   Node ID   Subgraph   Exec. Unit       Host Mem   MLA Mem     Neuron core % 10003       1         0          0000:00:1f.0:0   384        135660544   0.00 10001       3         0          0000:00:1f.0:0   384        67633152    0.00 10002       1         0          0000:00:1f.0:1   384        135660544   0.00

如果尚未加载任何模型,则输出将如下所示:

NN Models: 0 total, 0 running Number of VNCs tracked: 0 DLR Model   Node ID   Subgraph   Exec. Unit   Host Mem   MLA Mem   Neuron core %

下一步

将 DLAMI 与 AWS Neuron 结合使用