停止AWS EC2 p3.2xlarge实例前,导出代码数据并实现环境重建的标准方法
Hey there! 针对你在AWS EC2 p3.2xlarge上运行TensorFlow Object Detection API训练的场景,我整理了一套标准化、接近一键式的迁移方案,既能完整备份所有代码、数据和运行环境,又能快速在新实例中重建——比手动scp或者Jupyter下载高效得多:
一、先在原EC2实例上完成环境与数据的快照打包
这一步是把所有需要的内容打包成一个压缩包,方便一次性传输。
1. 导出Python虚拟环境依赖(可选,但保险)
因为你用了virtualenvwrapper,先激活你的训练环境(假设环境名是tf-od-env),导出所有pip安装的包:
workon tf-od-env pip freeze > ~/tf-od-requirements.txt
2. 导出系统APT软件包列表
把通过sudo apt-get安装的所有软件包记录下来,方便新实例一键恢复:
sudo dpkg --get-selections > ~/apt-packages-list.txt
3. 打包所有核心内容
用tar把虚拟环境、克隆的仓库、自定义文件、依赖列表全部打包成一个压缩包。替换下面的路径为你实际的目录:
cd ~ tar -czvf ec2-tf-od-backup.tar.gz \ .virtualenvs/tf-od-env \ # 你的虚拟环境目录 my-github-repos \ # 克隆的GitHub仓库所在目录 my-training-files \ # 你自己创建的.ipynb/.py/.jpg等文件目录 tf-od-requirements.txt \ apt-packages-list.txt
二、把备份包下载到本地
用scp一次性把压缩包拉到本地,比逐个文件传输高效太多:
scp -i /path/to/your-aws-key.pem ubuntu@<原EC2实例公网IP>:~/ec2-tf-od-backup.tar.gz /path/to/local/folder/
记得替换成你自己的密钥路径、EC2实例IP和本地保存路径。
三、在新Ubuntu 20.04实例上一键重建环境
启动新的p3.2xlarge实例(同样用Ubuntu 20.04 AMI),然后执行以下步骤:
1. 上传备份包到新实例
scp -i /path/to/your-aws-key.pem /path/to/local/ec2-tf-od-backup.tar.gz ubuntu@<新EC2实例公网IP>:~/
2. 恢复系统软件包和基础配置
登录新实例后,先恢复APT软件包:
sudo dpkg --set-selections < ~/apt-packages-list.txt sudo apt-get dselect-upgrade -y # 确保virtualenvwrapper配置好(如果原实例的配置没包含在备份里,手动加一下) echo "export WORKON_HOME=~/.virtualenvs" >> ~/.bashrc echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc source ~/.bashrc
3. 解压备份包恢复所有内容
cd ~ tar -xzvf ec2-tf-od-backup.tar.gz
这会直接把虚拟环境、代码、数据恢复到原路径,不需要重新创建虚拟环境——因为我们打包了整个环境目录,所有依赖都已经在里面了。
4. 验证环境正常
激活虚拟环境,检查TensorFlow和Object Detection API是否能正常运行:
workon tf-od-env python -c "import tensorflow; print(tensorflow.__version__)" # 测试Object Detection API cd ~/my-github-repos/tensorflow/models/research python object_detection/builders/model_builder_tf2_test.py
终极一键方案:创建自定义AWS AMI
如果之后你需要频繁创建相同的训练实例,创建自定义AMI才是真正的一键式解决方案:
- 在原EC2实例上,先清理临时文件减少镜像大小:
sudo apt-get clean rm -rf ~/.cache/pip/* rm -rf /tmp/* - 停止原实例(必须停止才能创建AMI),在AWS控制台右键实例 → 选择「创建镜像」,填写名称和描述,等待镜像创建完成。
- 之后创建新实例时,直接选择你自己的自定义AMI,启动后所有环境、软件、文件和原实例完全一致,不需要任何额外配置,真正一键启动。
这个方法的优势是彻底省去了备份、传输、重建的步骤,适合需要重复部署的场景,唯一的小成本是镜像会占用AWS的EBS存储(价格很低)。
内容的提问来源于stack exchange,提问作者Tarun Sharma

