

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置 DLAMI 实例
<a name="setup"></a>

[选择 DLAMI](choose-dlami.md) 并[选择要使用的 Amazon Elastic Compute Cloud（Amazon EC2）实例类型](instance-select.md)后，就可以设置新的 DLAMI 实例了。

如果您尚未选择 DLAMI 和 EC2 实例类型，请参阅 [DLAMI 入门](getting-started.md)。

**Topics**
+ [查找 DLAMI 的 ID](find-dlami-id.md)
+ [启动 DLAMI 实例](launch.md)
+ [连接到 DLAMI 实例](setup-connect.md)
+ [在 DLAMI 实例上设置 Jupyter Notebook 服务器](setup-jupyter.md)
+ [清理 DLAMI 实例](setup-cleanup.md)

# 查找 DLAMI 的 ID
<a name="find-dlami-id"></a>

每个 DLAMI 都有唯一标识符（ID）。当您使用 Amazon EC2 控制台启动 DLAMI 实例时，可以选择使用 DLAMI ID 来搜索要使用的 DLAMI。当您使用 AWS Command Line Interface（AWS CLI）启动 DLAMI 实例时，需要此 ID。

可以使用 AWS CLI 命令为 Amazon EC2 或 Parameter Store（AWS Systems Manager 的一项功能）查找所选 DLAMI 的 ID。有关安装和配置 AWS CLI 的说明，请参阅《AWS Command Line Interface 用户指南》**中的 [Get started with the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started)。

------
#### [ Using Parameter Store ]

**使用 **ssm get-parameter** 查找 DLAMI ID**

在以下 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ssm/get-parameter.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ssm/get-parameter.html) 命令中，对于 `--name` 选项，参数名称格式为 */aws/service/deeplearning/ami/\$1architecture/\$1ami\$1type/latest/ami-id*。在该名称格式中，*architecture* 可以是 **x86\$164** 或 **arm64**。通过使用 DLAMI 名称并移除关键字“deep”、“learning”和“ami”来指定 *ami\$1type*。可以在 [深度学习 AMIs 发行说明](appendix-ami-release-notes.md)中找到 AMI 名称。
**重要**  
要使用此命令，您使用的 AWS Identity and Access Management（IAM）主体必须具有 `ssm:GetParameter` 权限。有关 IAM 主体的更多信息，请参阅《IAM 用户指南》**中 **IAM 角色**的[其他资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_additional-resources)部分。
+ 

  ```
  aws ssm get-parameter --name /aws/service/deeplearning/ami/x86_64/base-oss-nvidia-driver-ubuntu-22.04/latest/ami-id  \
  --region us-east-1 --query "Parameter.Value" --output text
  ```

  该输出值应该类似于以下内容：

  ```
  ami-09ee1a996ac214ce7
  ```
**提示**  
对于目前支持的一些 DLAMI 框架，可以在 [深度学习 AMIs 发行说明](appendix-ami-release-notes.md)中找到更具体的示例 **ssm get-parameter** 命令。选择指向所选 DLAMI 的发布说明的链接，然后在发布说明中查找其 ID 查询。

------
#### [ Using Amazon EC2 CLI ]

**使用 **ec2 describe-images** 查找 DLAMI ID**

在以下 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html) 命令中，对于筛选条件 `Name=name` 的值，输入 DLAMI 名称。可以为给定的框架指定发布版本，也可以通过将版本号替换为问号（?）来获取最新版本。
+ 

  ```
  aws ec2 describe-images --region us-east-1 --owners amazon \
  --filters 'Name=name,Values=Deep Learning Base OSS Nvidia Driver GPU AMI (Ubuntu 22.04) ????????' 'Name=state,Values=available' \
  --query 'reverse(sort_by(Images, &amp;CreationDate))[:1].ImageId' --output text
  ```

  该输出值应该类似于以下内容：

  ```
  ami-09ee1a996ac214ce7
  ```
**提示**  
有关特定于您选择的 DLAMI 的示例 **ec2 describe-images** 命令，请参阅 [深度学习 AMIs 发行说明](appendix-ami-release-notes.md)。选择指向所选 DLAMI 的发布说明的链接，然后在发布说明中查找其 ID 查询。

------

**后续步骤**  
[启动 DLAMI 实例](launch.md)

# 启动 DLAMI 实例
<a name="launch"></a>

找到要用于启动 DLAMI 实例的 DLAMI 的 [ID](find-dlami-id.md) 后，就可以启动实例了。要启动它，可以使用 Amazon EC2 控制台或 AWS Command Line Interface（AWS CLI）。

**注意**  
对于此演练，我们可能会针对深度学习基本 OSS Nvidia 驱动程序 GPU AMI（Ubuntu 22.04）进行引用。即使选择其他 DLAMI，您也应能按照本指南进行操作。

------
#### [ EC2 console ]

**注意**  
要加快高性能计算（HPC）和机器学习应用程序的速度，可以使用 Elastic Fabric Adapter（EFA）启动 DLAMI 实例。有关具体说明，请参阅[使用 EFA 启动 AWS Deep Learning AMIs 实例](tutorial-efa-launching.md)。

1. 打开 [EC2 控制台](https://console.aws.amazon.com/ec2)。

1. 请注意最顶层导航中的当前 AWS 区域。如果这不是您所需的区域，请在继续操作之前更改此选项。有关更多信息，请参阅《Amazon Web Services 一般参考》**中的 [Amazon EC2 service endpoints](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html#ec2_region)。

1. 选择**启动实例**。

1. 为您的实例输入名称，然后选择适合您的 DLAMI。

   1. 在**我的 AMI** 中查找现有 DLAMI，或者选择**快速入门**。

   1. 按 DLAMI ID 进行搜索。浏览这些选项，然后选中您的选择。

1. 选择一个实例类型。可以在 [深度学习 AMIs 发行说明](appendix-ami-release-notes.md)中找到适用于 DLAMI 的建议实例系列。有关 DLAMI 实例类型的一般建议，请参阅[选择 DLAMI 实例类型](instance-select.md)。

1. 选择**启动实例**。

------
#### [ AWS CLI ]


+ 要使用 AWS CLI，您必须拥有要使用的 DLAMI 的 ID、AWS 区域和 EC2 实例类型以及您的安全令牌信息。然后，可以使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/run-instances.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/run-instances.html) AWS CLI 命令启动实例。

  有关安装和配置 AWS CLI 的说明，请参阅《AWS Command Line Interface 用户指南》**中的 [Get started with the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started)。有关更多信息，包括命令示例，请参阅 [Launch, list, and close Amazon EC2 instances for the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-instances.html)。

------

使用 Amazon EC2 控制台或 AWS CLI 启动实例后，等待实例准备就绪。这通常仅需要几分钟时间。可以在 [Amazon EC2 控制台](https://console.aws.amazon.com/ec2)中验证实例的状态。有关更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 实例的状态检查](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)。

**后续步骤**  
[连接到 DLAMI 实例](setup-connect.md)

# 连接到 DLAMI 实例
<a name="setup-connect"></a>

在您[启动 DLAMI](launch.md) 实例并且该实例正在运行之后，可以使用 SSH 从客户端（Windows、macOS 或 Linux）连接到该实例。有关说明，请参阅《Amazon EC2 用户指南》**中的[使用 SSH 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)。

如果您想在登录后设置 Jupyter Notebook 服务器，请随身携带 SSH 登录命令的副本。要连接到 Jupyter 网页，可以使用该命令的变体。

**后续步骤**  
[在 DLAMI 实例上设置 Jupyter Notebook 服务器](setup-jupyter.md)

# 在 DLAMI 实例上设置 Jupyter Notebook 服务器
<a name="setup-jupyter"></a>

使用 Jupyter Notebook 服务器，可以从 DLAMI 实例创建和运行 Jupyter Notebook。使用 Jupyter 笔记本，您可以进行机器学习 (ML) 实验以进行训练和推理，同时使用 AWS 基础架构和访问 DLAMI 中内置的软件包。有关 Jupyter Notebook 的更多信息，请参阅 Jupyter 用户文档网站上的 [The Jupyter Notebook](https://jupyter-notebook.readthedocs.io/en/latest/notebook.html)。

要设置 Jupyter Notebook 服务器，您必须：
+ 在 DLAMI 实例上配置 Jupyter Notebook 服务器。
+ 配置客户端以连接到 Jupyter Notebook 服务器。我们提供适用于 Windows、macOS 和 Linux 客户端的配置说明。
+ 通过登录 Jupyter Notebook 服务器，测试设置。

要完成这些步骤，请遵循以下主题中的说明。设置 Jupyter Notebook 服务器后，您可以运行中附带的示例笔记本教程。DLAMIs有关更多信息，请参阅 [运行 Jupyter 笔记本电脑教程](tutorial-jupyter.md)。

**Topics**
+ [保护服务器](setup-jupyter-secure.md)
+ [启动服务器](setup-jupyter-start-server.md)
+ [连接客户端](setup-jupyter-connect.md)
+ [登录](setup-jupyter-login.md)

# 在 DLAMI 实例上保护 Jupyter Notebook 服务器
<a name="setup-jupyter-secure"></a>

为了保护 Jupyter Notebook 服务器的安全，我们建议设置密码并为服务器创建 SSL 证书。要配置密码和 SSL，请先[连接到 DLAMI 实例](setup-connect.md)，然后按照以下说明进行操作。

**保护 Jupyter Notebook 服务器**

1. Jupyter 提供了一个密码实用工具。运行以下命令，在命令提示符处输入您的首选密码。

   ```
   $ jupyter notebook password
   ```

   输出类似如下：

   ```
   Enter password:
   					Verify password:
   					[NotebookPasswordApp] Wrote hashed password to /home/ubuntu/.jupyter/jupyter_notebook_config.json
   ```

1. 创建自签名 SSL 证书。按照提示填写您认为适当的区域。如果要将提示留空，则必须输入 `.`。您的答案将不会影响证书的功能性。

   ```
   $ cd ~
   					$ mkdir ssl
   					$ cd ssl
   					$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
   ```

**注意**  
您可能希望创建一个常规的 SSL 证书，该证书由第三方签名，且不会导致浏览器向您发出安全警告。此过程涉及内容较多。有关更多信息，请参阅 Jupyter Notebook 用户文档中的 [Securing a notebook server](https://jupyter-notebook.readthedocs.io/en/6.2.0/public_server.html#securing-a-notebook-server)。

**后续步骤**  
[在 DLAMI 实例上启动 Jupyter Notebook 服务器](setup-jupyter-start-server.md)

# 在 DLAMI 实例上启动 Jupyter Notebook 服务器
<a name="setup-jupyter-start-server"></a>

在[使用密码和 SSL 保护 Jupyter Notebook 服务器](setup-jupyter-secure.md)后，可以启动服务器。登录 DLAMI 实例并运行以下命令，该命令使用您之前创建的 SSL 证书。

```
$ jupyter notebook --certfile=~/ssl/mycert.pem --keyfile ~/ssl/mykey.key
```

启动服务器后，即可通过 SSH 隧道从您的客户端计算机连接到服务器。当服务器运行时，您将看到来自 Jupyter 的一些输出，这些输出证实服务器正在运行。此时，请忽略表示您可以通过本地主机 URL 访问服务器的标注，因为在您创建隧道之前，这是行不通的。

**注意**  
当您使用 Jupyter Web 界面切换框架时，Jupyter 将处理切换环境。有关更多信息，请参阅 [通过 Jupyter 切换环境](tutorial-jupyter.md#tutorial-jupyter-switching)。

**后续步骤**  
[在 DLAMI 实例上将客户端连接到 Jupyter Notebook 服务器](setup-jupyter-connect.md)

# 在 DLAMI 实例上将客户端连接到 Jupyter Notebook 服务器
<a name="setup-jupyter-connect"></a>

[在 DLAMI 实例上启动 Jupyter Notebook 服务器](setup-jupyter-start-server.md)后，请将 Windows、macOS 或 Linux 客户端配置为连接到服务器。当您连接时，可以在工作区中的服务器上创建和访问 Jupyter Notebook，并在服务器上运行深度学习代码。

## 先决条件
<a name="setup-jupyter-connect-prereqs"></a>

请确保您拥有设置 SSH 隧道所需的以下信息：
+ Amazon EC2 实例的公有 DNS 名称。有关更多信息，请参阅《*Amazon EC2 用户指南*》中的 [Amazon EC2 实例主机名类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html)。
+ 私有密钥文件的密钥对。有关访问密钥对的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 密钥对和 Amazon EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

## 从 Windows、macOS 或 Linux 客户端进行连接
<a name="setup-jupyter-connect-client"></a>

要从 Windows、macOS 或 Linux 客户端连接到 DLAMI 实例，请按照客户端操作系统的说明进行操作。

------
#### [ Windows ]

**使用 SSH 从 Windows 客户端连接到 DLAMI 实例**

1. 使用适用于 Windows 的 SSH 客户端，例如 PuTTY。有关说明，请参阅《Amazon EC2 用户指南》**中的[使用 PuTTY 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html)。有关其它 SSH 连接选项，请参阅[使用 SSH 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)。

1. （可选）创建通往正在运行的 Jupyter 服务器的 SSH 隧道。在 Windows 客户端上安装 Git Bash，然后按照 macOS 和 Linux 客户端的连接说明进行操作。

------
#### [ macOS or Linux ]

**使用 SSH 从 macOS 或 Linux 客户端连接到 DLAMI 实例**

1. 打开终端。

1. 运行以下命令，将本地端口 8888 上的所有请求转发到远程 Amazon EC2 实例上的端口 8888。通过替换密钥位置来更新命令，以访问 Amazon EC2 实例和您的 Amazon EC2 实例的公有 DNS 名称。注意，对于 Amazon Linux AMI，用户名是 `ec2-user` 而非 `ubuntu`。

   ```
   $ ssh -i ~/mykeypair.pem -N -f -L 8888:localhost:8888 ubuntu@ec2-###-##-##-###.compute-1.amazonaws.com
   ```

   此命令将在客户端与运行 Jupyter Notebook 服务器的远程 Amazon EC2 实例之间打开一个隧道。

------

**后续步骤**  
[在 DLAMI 实例上登录 Jupyter Notebook 服务器](setup-jupyter-login.md)

# 在 DLAMI 实例上登录 Jupyter Notebook 服务器
<a name="setup-jupyter-login"></a>

[在 DLAMI 实例上将客户端连接到 Jupyter Notebook 服务器](setup-jupyter-connect.md)后，可以登录服务器。

**在浏览器中登录服务器**

1. 在浏览器的地址栏中，输入以下 URL，或单击此链接：[https://localhost:8888](https://localhost:8888)

1. 借助自签名 SSL 证书，浏览器会警告和提示您避免继续访问网站。  
![\[SSL 警告\]](http://docs.aws.amazon.com/zh_cn/dlami/latest/devguide/images/ssl-warning1.png)

   由于这是您自己设置的，所以可以安全地继续。根据您的浏览器情况，有可能出现“高级”、“显示详细信息”等类似按钮。  
![\[SSL 警告确认\]](http://docs.aws.amazon.com/zh_cn/dlami/latest/devguide/images/ssl-warning2.png)

   单击此消息，然后单击“前进到本地主机”链接。如果连接成功，则会看到 Jupyter Notebook 服务器网页。此时，系统将要求您提供先前设置的密码。

   现在，您可以访问在 DLAMI 实例上运行的 Jupyter Notebook 服务器了。您可以创建新的笔记本或运行提供的[教程](tutorials.md)。

# 清理 DLAMI 实例
<a name="setup-cleanup"></a>

当您不再需要 DLAMI 实例时，可以在 Amazon EC2 上停止或终止它，以免产生意外费用。

如果您停止某个实例，可以保留它，稍后当您想再次使用它时再启动它。配置、文件和其它非易失性信息存储在 Amazon Simple Storage Service（Amazon S3）上的卷中。当实例停止时，您会因保留卷而产生 S3 费用，但不会因计算资源而产生费用。当您再次启动实例时，它将装载包含数据的存储卷。

如果您终止实例，实例将消失，您将无法再次启动它。当然，对于终止的实例，您不会再为计算资源支付任何费用。但是，您的数据仍存储在 Amazon S3 上，并且您可能会继续支付 S3 费用。为了防止与终止的实例相关的所有进一步费用，还必须删除 Amazon S3 上的存储卷。有关说明，请参阅《Amazon EC2 用户指南》**中的[终止 Amazon EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

有关 Amazon EC2 实例状态（如 `stopped` 和 `terminated`）的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 实例状态更改](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html)。