实验任务一:环境配置¶
开始之前
在使用之前,请先参考实验一介绍,了解实验要求和实验内容。
一、安装 Visual Studio Code (VSCode)¶
VSCode 优势
- 跨平台支持:Windows、macOS 和 Linux
- 丰富的扩展生态:Python、Docker、Jupyter等插件
- 内置 Git 集成:方便版本控制
- 智能代码补全:IntelliSense支持
- 轻量级但强大:资源占用少,启动快
- 终端集成:内置终端支持
- 良好的调试支持:多语言调试工具
方法2:通过APT仓库安装
二、安装 Docker¶
Docker 主要优点
- 环境隔离:每个 Docker 容器都是独立的环境,不会影响宿主机或其他容器
- 跨平台兼容性:在不同操作系统上运行相同的 Docker 容器,不用担心环境差异
- 易于部署:可以快速创建、复制和销毁容器,使得开发和生产环境保持一致
- 资源高效:相比虚拟机,Docker 容器占用的系统资源更少,启动速度更快
- 依赖管理:Docker 容器包含所有依赖项,避免了"在我机器上可以跑"的问题
使用 Docker 的原因
- 简化开发环境配置:开发者可以直接使用 Docker 容器,而无需手动安装复杂的软件依赖
- 提高团队协作效率:团队成员可以共享相同的 Docker 镜像,确保环境一致
- 方便 CI/CD 集成:Docker 允许在 CI/CD 流水线中构建和部署应用,提高自动化能力
- 易于扩展和管理:可以通过 Docker Compose 轻松管理多个容器,适用于微服务架构
2. 安装 Docker 官方版本
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# 安装阿里云gpg证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add
# 在指定目录下新建docker.list文件,添加阿里云镜像源
cd /etc/apt/sources.list.d
sudo touch docker.list
sudo chmod 666 docker.list
sudo echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > docker.list
sudo apt-get update && sudo apt-get upgrade
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. 配置镜像源及NVIDIA容器工具包
# 安装NVIDIA 容器工具包
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sources.list.d/nvidia-docker.list
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
# 配置镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.nju.edu.cn",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn"
],
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
三、配置 VSCode 使用 Docker¶
VSCode Docker 集成
通过 VSCode 的 Docker 扩展,可以直接在编辑器内管理容器、镜像、Docker Compose 以及 Kubernetes 资源。
1. 安装 Docker 扩展
在VSCode中搜索并安装 Docker 扩展(Microsoft官方出品)
2. 创建并运行基础容器
参数说明
-it
:交互模式--name
:容器名称--gpus all
:使用所有GPU-v
:挂载主机目录到容器(方便代码同步)ubuntu:22.04
:基础镜像
3. 连接容器
点击VSCode左下角 >< 按钮,选择 New Dev Container。
四、Docker容器内配置 Conda 和 PyTorch¶
容器内操作
确保你已经进入Docker容器内部(workspace目录下):
ctrl+` 可以打开VSCode内docker container终端面板
必要扩展安装
打开 VSCode,按 Ctrl + Shift + X
打开扩展市场,搜索并安装:
- Python(Python代码支持)
- Pylance(代码补全和类型检查)
- Jupyter(Jupyter Notebook支持)
- Docker(Docker支持)
1. 安装 Miniconda
apt update && apt install -y wget
# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b
echo 'export PATH="/root/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
conda init
注意
conda init后需要新建一个bash终端,否则conda环境不会生效。
2. 创建 PyTorch 环境
# 添加镜像源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
五、Jupyter Notebook使用¶
Jupyter Notebook 简介
Jupyter Notebook 是一种非常流行的工具,尤其在数据科学、机器学习以及深度学习领域,用于交互式编程和分析。你可以在其中编写和运行 Python 代码,还能即时查看代码输出和生成图表。它支持 Markdown 和 LaTeX,适合进行数据分析报告或实验记录。
方式二 在 VSCode 中使用(推荐)
- 安装插件:
-
选择Python环境: 在右上角可以选择我们之前安装好的python环境(pytorch)
vscode jupyter 选择环境下载插件
1.选择下载插件
2.运行单元格时,出现需要下载ipykernel环境,选择yes(或者自行安装ipykernel)
-
运行代码: 在打开的 Notebook 文件中,你可以像在 Jupyter Notebook 中一样运行代码单元(cells)。每个单元格可以是 Python 代码,也可以是 Markdown,用于文档编写。
六、导出与导入 Docker 容器¶
为什么需要导出导入Docker容器?
-
环境共享:
- 可以将配置好的开发环境分享给团队其他成员
- 确保所有人使用完全相同的环境,避免"在我这里能运行"的问题
-
环境备份:
- 保存已配置好的环境状态,防止意外损坏
- 在需要时可以快速恢复到之前的状态
-
跨机器迁移:
- 方便在不同机器间转移开发环境
- 特别适用于没有稳定网络连接的情况,避免重新下载和配置
-
版本控制:
- 可以保存不同阶段的环境快照
- 在需要时回滚到特定版本
注意
以下命令需要在Ubuntu终端(terminal)中运行,而不是容器内部。
1. 导出容器为镜像
说明
- 将运行中容器的当前状态保存为新的镜像
my-pytorch-env
:容器名称my-pytorch-image:latest
:新镜像名称和标签
2. 导出镜像为文件
说明
- 将镜像保存为可传输的tar文件
-o
:指定输出文件- 生成的tar文件可以在不同机器间传输