AWS Deep Learning Containers(DL Containers)是预先安装了常用深度学习框架(如 TensorFlow、PyTorch等)的Docker镜像。使用这些容器,开发人员和数据科学家可以跳过环境构建和优化的繁琐流程,快速部署机器学习应用程序。本教程将讲解如何在Amazon EC2上通过AWS Deep Learning Containers快速训练一个TensorFlow模型。
一、注册AWS账号
在本教程中,我们将使用 AWS Deep Learning Containers 部署机器学习模型,因此需要先注册一个 AWS 账户。AWS Deep Learning Containers 本身没有额外费用,唯一需要支付的是运行本教程过程中使用的 Amazon EC2 实例(如 c5.large)。在操作完成后需要支付的费用通常不会超过1美元。
AWS官网地址:https://www.amazon.com/
二、为Amazon ECR配置访问权限
AWS Deep Learning Containers 的镜像存储在 Amazon Elastic Container Registry(ECR)上。为了访问这些镜像,我们需要为当前的 IAM 用户配置访问权限。以下是如何操作的步骤:
1、打开IAM控制台
首先打开 AWS 管理控制台,在控制台的搜索框中输入“IAM”,然后选择进入 IAM 控制台。
2、选择现有用户或创建新用户
在 IAM 控制台左侧导航栏中,选择“Users”(用户),然后点击你希望为其添加权限的用户名称。
3、为用户添加权限
在用户的概要页面中,点击“Add permissions”(添加权限)按钮,然后选择“Attach existing policies directly”(直接附加现有策略)。
4、附加ECS完全访问策略
在策略列表中,搜索 AmazonECS_FullAccess 策略,选中该策略后点击“Review”(查看)并“Add permissions”(添加权限)。
5、添加内联策略
在用户的概要页面,点击“Add inline policy”(添加内联策略)。然后在 页签中粘贴以下内容:
{ "Version": "2012-10-17", "Statement": [ { "Action": "ecr:*", "Effect": "Allow", "Resource": "*" } ] }
点击“Review Policy”(审查策略),为该策略命名(例如:ECR),然后点击“Create Policy”(创建策略)。
三、启动AWS Deep Learning Base AMI实例
接下来将使用 AWS Deep Learning Base AMI 来启动 EC2 实例,并在该实例上运行 AWS Deep Learning Containers。Deep Learning Base AMI 预先安装了必需的依赖项,如 NVIDIA 驱动程序、Docker 以及 nvidia-docker 等,帮助我们快速开始深度学习任务。
1、进入EC2控制台
打开 AWS 管理控制台,搜索“EC2”,然后点击进入Amazon EC2 服务控制台。
2、启动新实例
在 EC2 控制台中,点击左侧菜单的“Launch Instance”(启动实例)按钮,开始创建新的 EC2 实例。
3、选择Deep Learning Base AMI
在“Choose an Amazon Machine Image (AMI)”界面,点击左侧的“AWS Marketplace”标签页,在搜索框中输入 deep learning base ubuntu,然后选择适合你的镜像版本(如 Deep Learning Base AMI (Ubuntu))。你也可以选择其他版本,如 Deep Learning Base AMI (Amazon Linux)。
4、选择实例类型
接下来,选择实例类型。在本教程中,我们将使用 c5.large 实例,这是一个性价比高的通用型实例。如果你需要更多计算资源(如 GPU 加速),也可以选择支持 GPU 的实例类型,如 G4、G5、P3、P4 等。
5、启动实例
完成实例类型的选择后,点击“Review and Launch”(查看并启动)按钮。确认实例配置无误后,点击“Launch”(启动)。
6、创建并下载密钥对
系统会要求你选择或创建一个 SSH 密钥对,用于安全访问你的Amazon EC2 实例。如果没有现有的密钥对,选择“Create a new key pair”(创建新密钥对),为其命名,并点击“Download Key Pair”(下载密钥对)。请确保将密钥文件保存在安全的位置,因为如果丢失,无法再通过 SSH 访问实例。
7、查看实例详情
启动完成后,你可以在 Amazon EC2控制台中查看实例的详细信息,记录下实例的 ID 和公有 IP 地址,以便后续通过 SSH 访问该实例。
四、连接到Amazon EC2实例
在此步骤中,将通过 SSH 连接到新启动的 Amazon EC2 实例。以下是适用于 Mac/Linux 环境的操作指南。
1、获取实例的公共DNS地址
首先,需要获取Amazon EC2 实例的公共 DNS 地址。登录到 AWS 管理控制台,在 Description(说明)标签下找到并复制实例的公共 DNS (IPv4) 地址。
2、打开命令行终端
在终端中,切换到存放安全密钥文件的目录,并使用 SSH 命令连接到实例。
打开终端并输入以下命令切换到存放 .pem 密钥文件的目录(通常是在下载文件夹):
cd /Users/<your_username>/Downloads/
修改密钥文件的权限,确保它只能由访问:
chmod 0400 <your .pem filename>
使用 SSH 命令连接到 Amazon EC2实例:
ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>
请替换 <your .pem filename> 为密钥文件名,<your instance DNS> 为实例的公共 DNS 地址。
3、安装 Docker
为了在实例上运行容器,首先需要安装 Docker。为确保安装顺利进行,建议先停止系统的自动更新进程:
sudo pkill -f "apt.systemd.daily" sudo apt install docker.io
五、登录Amazon ECR
AWS 深度学习容器镜像托管在 Amazon Elastic Container Registry (ECR) 上,这是一个全托管的 Docker 容器注册表,可以让开发人员轻松管理和部署容器镜像。
1、配置EC2实例的AWS凭据
需要 AWS 访问密钥 ID 和私密访问密钥来配置实例。若还没有这些信息,可以在 AWS 控制台中创建它们。
2、登录Amazon ECR
通过以下命令登录到 Amazon ECR,验证对容器镜像的访问权限:
sudo su – $(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)
注意:在命令中包括 $ 和圆括号,以确保正确执行。命令执行成功后,将看到“Login Succeeded”(登录成功)的消息。
六、使用Deep Learning Containers运行TensorFlow训练
在这一部分,我们将利用 AWS Deep Learning Containers 镜像和 Python 3.6 在 CPU 实例上运行 TensorFlow 训练。
1、启动AWS Deep Learning Containers
使用以下命令启动 AWS Deep Learning Containers 镜像。如果镜像尚未下载,系统会自动从 ECR 拉取它。
对于 CPU 实例,使用以下命令:
docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:2.8.0-cpu-py39-ubuntu20.04-e3
注:这个步骤可能会花费几分钟,具体时间取决于镜像的大小。如果使用的是 GPU 实例,请使用 nvidia-docker 而非 docker。运行成功后,将进入容器的提示符。
2、拉取并准备示例模型
接下来,我们将从 GitHub 克隆 Keras 仓库,该仓库中包含用于训练的示例 Python 脚本。
git clone https://github.com/gilinachum/keras
3、开始模型训练
现在,我们已经准备好训练模型。使用以下命令启动经典的 MNIST CNN 模型训练:
python keras/mnist.py
通过上述步骤,已经使用 AWS Deep Learning Containers 开始了 MNIST CNN 模型的训练。
七、终止资源
完成训练后,建议终止当前的 Amazon EC2 实例和其他不再使用的资源,以减少不必要的费用。
1、选择运行中的实例
登录到 AWS 管理控制台,在Amazon EC2仪表板中选择 Running Instances(运行中的实例)。
2、终止Amazon EC2实例
选择创建的Amazon EC2实例,然后点击 Actions > Instance State > Terminate(操作 > 实例状态 > 终止)。
3、确认终止
系统会询问是否确认终止操作,点击 Yes, Terminate(是,终止)以确认。终止过程通常几秒钟内即可完成,实例状态将变为 terminated(已终止)。
到此为止已经成功使用 AWS Deep Learning Containers 在 EC2 实例上进行了 TensorFlow 训练,训练了 MNIST CNN 模型。现在可以利用 AWS 提供的深度学习容器镜像,在 Amazon EC2、Amazon ECS、Amazon EKS 或 Kubernetes 上进行大规模的深度学习训练和推理。
相关推荐:
《Stable Diffusion快速部署(Amazon EC2)》
-
广告合作
-
QQ群号:707632017