AWS Trainium & Inferentia 文档
在 Amazon EC2 上开始
并获得增强的文档体验
开始使用
在 Amazon EC2 上开始
在 Amazon EC2 上使用 AWS Trainium 或 Inferentia 以及 Optimum Neuron 的最简单方法是使用 Hugging Face Neuron 深度学习 AMI (DLAMI)。DLAMI 中预装了所有必需的库,包括 Neuron Drivers、Transformers、Datasets 和 Accelerate。HF DLAMI 对 Amazon EC2 用户是免费提供的。
Optimum Neuron 支持 Inf1、Inf2、Trn1 和 Trn2,所有这些都可以在 Amazon EC2 上访问。你可以在“加速计算”部分找到 Trn 和 Inf 实例的所有规格,请参阅此处。
在本指南中,我们将向您展示
在 Amazon EC2 上使用 HF DLAMI 创建 AWS Trainium 或 Inferentia 实例
在创建 EC2 实例之前,请确保您位于所选实例支持的区域,并且您的 AWS 账户中有足够的配额。
查找支持的区域
截至2025年2月,以下是支持至少一种 Trainium 或 Inferentia2 实例类型的区域列表
- us-east-1: 美国东部 (弗吉尼亚北部)
- us-east-2: 美国东部 (俄亥俄州)
- us-west-2: 美国西部 (俄勒冈州)
- ap-south-1: 亚太地区 (孟买)
- ap-northeast-1: 亚太地区 (东京)
- ap-southeast-1: 亚太地区 (新加坡)
- ap-southeast-2: 亚太地区 (悉尼)
- ap-southeast-4: 亚太地区 (墨尔本)
- eu-north-1: 欧洲 (斯德哥尔摩)
- eu-west-3: 欧洲 (巴黎)
- eu-west-2: 欧洲 (伦敦)
- eu-west-1: 欧洲 (爱尔兰)
- eu-central-1: 欧洲 (法兰克福)
- sa-east-1: 南美洲 (圣保罗)
这是一个 Python 脚本,可让您拉取您已启用的每个区域中最新支持的实例类型
import boto3
from datetime import datetime
ec2 = boto3.client('ec2')
regions = [region['RegionName'] for region in ec2.describe_regions()['Regions']]
#Edit this line to change the instance types displayed
instance_types = ['trn1.32xlarge', 'trn1.2xlarge', 'inf2.48xlarge', 'inf2.24xlarge', 'inf2.8xlarge', 'inf2.xlarge', 'trn2.48xlarge']
supported_regions = {}
for region in regions:
ec2_region = boto3.client('ec2', region_name=region)
response = ec2_region.describe_instance_type_offerings(
#LocationType='availability-zone',
Filters=[
{'Name': 'instance-type', 'Values': instance_types},
]
)
if response['InstanceTypeOfferings']:
supported_regions[region] = [offer['InstanceType'] for offer in response['InstanceTypeOfferings']]
print('# Supported Regions as of',datetime.now().strftime('%B %d, %Y'))
print('================')
client = boto3.client('ssm')
for region, instance_types in supported_regions.items():
try:
response = client.get_parameter(Name=f'/aws/service/global-infrastructure/regions/{region}/longName')
region_long_name = response['Parameter']['Value']
except (client.exceptions.ParameterNotFound, KeyError):
region_long_name = region
print(f' * {region}: {region_long_name}')
for instance_type in instance_types:
print(f' - {instance_type}')
print('\n')
提高服务配额
现在您已选择区域并切换到该区域,您可以通过 AWS控制台请求提高服务配额。方法是导航到左侧面板中的“服务配额”,选择“AWS 服务”,然后搜索 Amazon EC2,再搜索 “trn” 或 “inf”。您可以分别请求按需实例和 Spot 实例的配额增加。
默认情况下,Inferentia 和 Trainium 的所有配额均为 0。增加配额不收取任何费用。Inferentia 和 Trainium 有单独的配额,Spot 和按需实例也有单独的配额。配额是指分配给每个实例类型的 vCPU 的最大总数。
例如,192 的配额可以让您运行单个 inf2.48xlarge、两个 inf2.24xlarge、六个 inf2.8xlarge 或四十八个 inf2.xlarge。它还允许您运行 inf1 实例类型。同样,对于 Trainium,128 的配额可以让您运行单个 trn1n.32xlarge 或 trn1.32xlarge,但它也允许您运行十六个 trn1.2xlarge。
使用 HF DLAMI 启动 Amazon EC2 实例
让我们通过 EC2 控制台在 us-east-1 区域(弗吉尼亚北部)部署一个 trn1.2xlarge 实例。
首先,点击 **启动实例 (Launch instance)** 并为实例定义一个名称(例如 `trainium-huggingface-demo`)。

接下来,在 Amazon Marketplace 中搜索 Hugging Face AMI。在“应用程序和操作系统映像”的搜索栏中输入“Hugging Face”,然后按“回车键”。

这应该会打开带有搜索结果的“选择 Amazon Machine Image”视图。您现在可以导航到“AWS Marketplace AMIs”,找到 Hugging Face Neuron 深度学习 AMI 并点击选择。

如果您尚未订阅,系统会要求您订阅。该 AMI 完全免费,您只需支付 EC2 的计算费用。
然后你需要定义一个密钥对,它将用于通过 `ssh` 连接到实例。如果你没有密钥对,可以当场创建一个。

之后,创建或选择一个允许 `ssh` 流量的安全组。

现在您可以启动实例了。点击右侧的“启动实例 (Launch Instance)”。

AWS 现在将使用 Hugging Face Neuron 深度学习 AMI 来配置实例。
通过 SSH 连接
一旦实例准备就绪,您可以查看并复制公共 IPv4 地址以通过 `ssh` 登录到机器。

请将下面代码片段中的空字符串 `""` 替换为您的实例的 IP 地址以及您在启动实例时创建/选择的密钥对的路径。
PUBLIC_DNS="" # IP address
KEY_PATH="" # local path to key pair
ssh -i $KEY_PATH ubuntu@$PUBLIC_DNS
连接成功后,您可以运行 `neuron-ls` 来确保您有权访问 Trainium 加速器。您应该会看到类似下面的输出。
ubuntu@ip-172-31-79-164:~$ neuron-ls
instance-type: trn1.2xlarge
instance-id: i-0570615e41700a481
+--------+--------+--------+---------+
| NEURON | NEURON | NEURON | PCI |
| DEVICE | CORES | MEMORY | BDF |
+--------+--------+--------+---------+
| 0 | 2 | 32 GB | 00:1e.0 |
+--------+--------+--------+---------+
如何设置你的远程开发环境
我们将逐步介绍如何在 Amazon EC2 实例上设置 Jupyter Notebooks 或 VS Code 远程服务器。
这两种方法都需要某种形式的 SSH 连接。这些说明是为 Mac 编写的,但也应该适用于 Linux 系统。在 PC 上可能需要使用 Putty。
您应该拥有一个在部署实例时创建的 .pem 文件,或者来自先前部署的文件。您可以使用以下方式连接到您的系统:
ssh -i "/path/to/sshkey.pem" ubuntu@instance_ip_address
通过 Jupyter Notebook 访问
此方法涉及在 Neuron 实例上运行 Jupyter notebook 服务器,本地映射一个端口,然后使用桌面浏览器访问 notebook 服务器。
首先,将本地机器上的一个端口映射到 Neuron 实例。在您的系统终端中运行:
ssh -i "/path/to/sshkey.pem" -N -f -L localhost:8888:localhost:8888 ubuntu@instance_ip_address
然后从您的计算机使用 SSH 连接到您的 Amazon EC2 实例。连接后,在命令提示符下运行:
nohup jupyter notebook --no-browser --port=8888
几秒钟后,检查 nohup.out 文件以找到您服务器的令牌
cat nohup.out | grep localhost
复制连接字符串并将其粘贴到您的浏览器中。几秒钟后,您应该会看到 Jupyter Notebook 浏览器。它应该看起来像 https://:8888/tree?token=337fc8de2aenot_a_real_tokene952c43946e4fb57131
这个过程之所以有效,是因为您已将本地机器上的 8888 端口映射到 Neuron 实例上的 8888 端口,所以当您连接到 localhost:8888 时,您最终访问的是 Neuron 实例上的 Jupyter 服务器。
如果您遇到问题,请确保初始端口映射成功。如果您机器上的 8888 端口已经有程序在运行,这可能会导致错误。如果需要,您随时可以在所有指令中更改端口(例如 8885)。
通过 VS Code 远程服务器访问
在本地机器上安装 Visual Studio Code 后,您可以使用 Remote-SSH 命令编辑和运行存储在 Neuron 实例上的文件。有关更多详细信息,请参阅 VS Code 文章。
- 从命令面板 (F1, ⇧⌘P) 中选择 Remote-SSH: Connect to Host…
- 输入上面 ssh 部分的完整连接字符串: ssh -i “/path/to/sshkey.pem” ubuntu@instance_ip_address
- VS Code 应该会连接并自动设置 VS Code 服务器。
- 最终,您应该会被提示选择一个基础目录。您可以浏览到 Neuron 实例上的一个目录。
- 如果您发现菜单中的某些命令显示为灰色,但键盘命令仍然有效(⌘S 保存或 ^⇧` 打开终端),您可能需要重启 VS Code。