跳转至

实验任务一:环境配置

开始之前

在使用之前,请先参考实验一介绍,了解实验要求和实验内容。

一、安装 Visual Studio Code (VSCode)

VSCode 优势

  • 跨平台支持:Windows、macOS 和 Linux
  • 丰富的扩展生态:Python、Docker、Jupyter等插件
  • 内置 Git 集成:方便版本控制
  • 智能代码补全:IntelliSense支持
  • 轻量级但强大:资源占用少,启动快
  • 终端集成:内置终端支持
  • 良好的调试支持:多语言调试工具

方法1:通过 Snap 安装(推荐)

sudo snap install --classic code
下载

方法2:通过APT仓库安装
sudo apt update
sudo apt install -y software-properties-common apt-transport-https wget
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/

启动VSCode

code

二、安装 Docker

Docker 主要优点

  1. 环境隔离:每个 Docker 容器都是独立的环境,不会影响宿主机或其他容器
  2. 跨平台兼容性:在不同操作系统上运行相同的 Docker 容器,不用担心环境差异
  3. 易于部署:可以快速创建、复制和销毁容器,使得开发和生产环境保持一致
  4. 资源高效:相比虚拟机,Docker 容器占用的系统资源更少,启动速度更快
  5. 依赖管理:Docker 容器包含所有依赖项,避免了"在我机器上可以跑"的问题

使用 Docker 的原因

  • 简化开发环境配置:开发者可以直接使用 Docker 容器,而无需手动安装复杂的软件依赖
  • 提高团队协作效率:团队成员可以共享相同的 Docker 镜像,确保环境一致
  • 方便 CI/CD 集成:Docker 允许在 CI/CD 流水线中构建和部署应用,提高自动化能力
  • 易于扩展和管理:可以通过 Docker Compose 轻松管理多个容器,适用于微服务架构
1. 卸载旧版本(了解)
sudo apt remove docker docker-engine docker.io containerd runc

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

3. 配置用户权限

sudo usermod -aG docker $USER
newgrp docker  # 或注销后重新登录

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

验证安装

docker run hello-world

image-20250205175224646

三、配置 VSCode 使用 Docker

VSCode Docker 集成

通过 VSCode 的 Docker 扩展,可以直接在编辑器内管理容器、镜像、Docker Compose 以及 Kubernetes 资源。

1. 安装 Docker 扩展

在VSCode中搜索并安装 Docker 扩展(Microsoft官方出品)

2. 创建并运行基础容器

docker run -it --gpus all --name my-pytorch-env -v ~/:/workspace ubuntu:22.04 /bin/bash

参数说明

  • -it:交互模式
  • --name:容器名称
  • --gpus all:使用所有GPU
  • -v:挂载主机目录到容器(方便代码同步)
  • ubuntu:22.04:基础镜像

3. 连接容器

点击VSCode左下角 >< 按钮,选择 New Dev Container

注意

如果出现以下错误,请重启系统即可。

重启后需启动docker容器:

docker start my-pytorch-env

VSCode中选择 Attach to Running Container,选择my-pytorch-env容器 vscode-docker-attach

四、Docker容器内配置 Conda 和 PyTorch

容器内操作

确保你已经进入Docker容器内部(workspace目录下):

ctrl+` 可以打开VSCode内docker container终端面板

image-20250205175208931

必要扩展安装

打开 VSCode,按 Ctrl + Shift + X 打开扩展市场,搜索并安装:

  1. Python(Python代码支持)
  2. Pylance(代码补全和类型检查)
  3. Jupyter(Jupyter Notebook支持)
  4. 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
# 创建并配置环境
conda create -n pytorch python=3.10 -y
conda activate pytorch
# 安装pytorch及实验所需依赖
conda install ipykernel matplotlib numpy
pip install torch==2.5.1 torchvision torchaudio -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

3. 验证 PyTorch

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

五、Jupyter Notebook使用

Jupyter Notebook 简介

Jupyter Notebook 是一种非常流行的工具,尤其在数据科学、机器学习以及深度学习领域,用于交互式编程和分析。你可以在其中编写和运行 Python 代码,还能即时查看代码输出和生成图表。它支持 Markdown 和 LaTeX,适合进行数据分析报告或实验记录。

实验材料

实验所需的jupyter notebook在附件中。

下载练习代码

方式一 网页使用

pip install jupyter
安装完成后,可以通过在命令行中输入 jupyter notebook 启动网页。

方式二 在 VSCode 中使用(推荐)

  1. 安装插件img
  2. 选择Python环境: 在右上角可以选择我们之前安装好的python环境(pytorch) img

    vscode jupyter 选择环境下载插件

    1.选择下载插件

    img

    2.运行单元格时,出现需要下载ipykernel环境,选择yes(或者自行安装ipykernel)

    img

  3. 运行代码: 在打开的 Notebook 文件中,你可以像在 Jupyter Notebook 中一样运行代码单元(cells)。每个单元格可以是 Python 代码,也可以是 Markdown,用于文档编写。

六、导出与导入 Docker 容器

为什么需要导出导入Docker容器?

  1. 环境共享

    • 可以将配置好的开发环境分享给团队其他成员
    • 确保所有人使用完全相同的环境,避免"在我这里能运行"的问题
  2. 环境备份

    • 保存已配置好的环境状态,防止意外损坏
    • 在需要时可以快速恢复到之前的状态
  3. 跨机器迁移

    • 方便在不同机器间转移开发环境
    • 特别适用于没有稳定网络连接的情况,避免重新下载和配置
  4. 版本控制

    • 可以保存不同阶段的环境快照
    • 在需要时回滚到特定版本

注意

以下命令需要在Ubuntu终端(terminal)中运行,而不是容器内部。

1. 导出容器为镜像

docker commit my-pytorch-env my-pytorch-image:latest

说明

  • 将运行中容器的当前状态保存为新的镜像
  • my-pytorch-env:容器名称
  • my-pytorch-image:latest:新镜像名称和标签

2. 导出镜像为文件

docker save -o my-pytorch-image.tar my-pytorch-image:latest

说明

  • 将镜像保存为可传输的tar文件
  • -o:指定输出文件
  • 生成的tar文件可以在不同机器间传输

3. 导入镜像

docker load -i my-pytorch-image.tar