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。