Loading... ## 1、拉取并创建容器 首先,我们需要创建基于 `ubuntu:22.04` 镜像的 Docker 容器用作炼丹炉的搭建。在创建容器的过程中,若本地不存在指定的镜像,Docker 会自动执行拉取操作,省去了手动使用 `docker pull ubuntu:22.04` 命令来拉取镜像的步骤。以下是创建容器的命令及其参数说明: ```bash docker run -itd \ --gpus all \ --shm-size 16g \ --name container_name \ -v /home/workspace:/workspace \ ubuntu:22.04 /bin/bash ``` * `-itd`: `-i` (`--interactive`) 保持输入开放,`-t` 为容器分配一个伪终端,`-d` (`--detach`) 表示运行容器并让它在后台运行。 * `--gpus all`: 将主机上所有的 GPU 分配给容器。也可以设置为 `device=0,2` 指定 GPU 分配给 Docker 容器。 * `--shm-size 16g`: 设置共享内存的大小,此例中设置为 16 GB,这对于需要大量内存的计算任务很有用。 * `--name container_name`: 为创建的容器指定一个名称,让我们能够更容易地识别和引用容器。 * `-v /home/workspace:/workspace`: 将主机上的 `/home/workspace` 目录挂载到容器的 `/workspace` 目录,用于数据持久化和传输。 * `/bin/bash`: 容器启动后执行的命令,此处是启动 Bash 以便进一步操作。 如果创建容器后直接进入容器中,我们需要先使用 `Ctrl + D` 退出容器,并通过 `docker container start <container ID>` 命令重启容器,因为退出会导致容器停止运行。然后,使用 `docker exec -it <container ID> /bin/bash` 命令进入容器,在退出容器时,该方案仍会保持容器持续运行。 在上述命令中的 `<container ID>` 部分代表容器的标识。除了可以直接使用容器的 ID,你还可以使用容器的名称作为标识来执行命令,因为容器的名称在 Docker 中也是唯一的。 ## 2、搭建炼丹炉环境 1. **Miniconda**: 是 Anaconda 的精简发行版,提供了大量的软件包和强大的功能,同时具有良好的虚拟化性能,支持多种操作系统平台及高级功能,为需要广泛的第三方库和跨平台支持的用户提供了一个强大的基础。 2. **Miniforge**: 是基于 Anaconda 的轻量级开源发行版,用于更小的体积和资源占用。它默认使用 Conda-forge 社区的包源,适合在有限资源下进行开发或快速搭建开发环境的选择,以及避免 Anaconda 定制包和商业许可的用户使用。 ### ① 更新镜像源 为了提高软件包管理的效率和速度,我们需要替换默认的镜像源为阿里云镜像源,并执行必要的更新操作以确保系统的软件包保持最新状态。同时,为了提高操作效率,我们还需要安装一些常用的基础开发工具。 ```bash sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \ apt-get clean && \ apt-get update && \ apt-get install -y curl wget tree vim git ``` ### ② 安装配置 Miniconda / Miniforge 接下来,我们通过安装 Miniconda 高效地实现 Python 项目的管理,它允许我们创建隔离的编程环境,从而管理不同项目所需的依赖项和包,这样可以有效地防止版本冲突和满足特定项目的需求。 ```bash wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3 && \ rm Miniconda3-latest-Linux-x86_64.sh ``` 首先,您需要使用以下命令来编辑您的 `~/.bashrc` 文件: ```bash vim ~/.bashrc ``` 在文件末尾,您需要添加以下行,此操作将 Miniconda 目录添加到系统的 PATH 环境变量中,确保能够全局访问其执行命令: ```bash export PATH="/opt/miniconda3/bin:$PATH" ``` 另外,您也可以选择执行下面命令来自动完成该配置工作,这个命令将自动为您处理所有必要的设置项: ```bash /opt/miniconda3/bin/conda init ``` 完成这些更改后,您需要执行以下命令来应用 `.bashrc` 文件中的修改,并更新您当前的 shell 环境: ```bash source ~/.bashrc ``` 现在,我们已经成功安装并配置了 Miniconda,接下来,我们将介绍如何更新镜像源,以优化软件包下载速度和提升使用体验。我们可以通过下面命令指定将清华大学提供的镜像源地址添加到 conda 和 pip 配置来加速包现在下载安装速度: ```bash /opt/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \ /opt/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \ /opt/miniconda3/bin/conda config --set show_channel_urls yes && \ /opt/miniconda3/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple ``` 如果,您想在系统中安装 Miniforge,针对 conda-forge 社区优化的轻量级开源发行版,只需要在安装步骤执行下面安装命令即可: ```bash wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh && \ bash Miniforge3-Linux-x86_64.sh -b -p /opt/miniforge3 && \ rm Miniforge3-Linux-x86_64.sh ``` 紧接着,安装完成 Miniforge 后,接下来的步骤与之前相似,您只需要按照之前提到的 Miniconda 的设置方式,将 Miniforge 的安装路径添加到系统的 PATH 环境变量。另外,配置并更新镜像源以获得更快的下载速度。 ### ③ 虚拟环境安装 Pytroch 使用 conda 创建一个新的虚拟环境,并选择合适的环境名称。在创建环境时,您可以指定安装的 Python 的版本,这样做的好处是它将隔离环境配置,确保项目的可移植性和复现性。下面是创建新环境的命令示例,其中 `myenv` 是虚拟环境的名称,而 `python=3.10` 是指定安装的 Python 版本: ```bash conda create -n myenv python=3.10 ``` 创建环境后,您需要使用下面的命令来激活该环境: ```bash conda activate myenv ``` 进入该环境后,我们可以使用 conda 或 pip 安装所需的 Python 包,但在安装 pytorch 之前,还需要确定 GPU 支持的 CUDA 版本,这可以通过 `nvidia-smi` 命令查询得知。 然后,访问 [Pytorch 官网](https://pytorch.org/get-started/locally/) 选择与您的 CUDA 版本相对应的 PyTorch 版本。以conda为例,安装PyTorch的命令如下: ```bash conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia ``` 安装完成后,我们可以通过直接运行下面 Python 命令来检查 PyTorch 是否已经安装成功。如果安装成功,您将能够看到打印出 PyTorch 的版本号,而不会出现任何导入错误。 ```bash python -c "import torch; print(torch.__version__)" ``` 同时,可以执行下面命令检查 PyTorc 是否h成功识别到了 GPU 设备,如果输出为 `True`,则表示 PyTorch 成功识别到了 GPU 设备。如果输出为 `False` 或者出现错误,则表示没有检测到 GPU 支持,或者 PyTorch 尚未正确安装。 ```bash python -c "import torch; print(torch.cuda.is_available())" ``` 请确保在运行这些命令前,python 指的是您希望使用的 Python 版本,特别是如果您的环境中安装了多个版本的 Python 时,有可能需要使用 python3 而不是 python,这取决于您的系统配置。 ## 3、炼丹炉环境迁移 在您完成代码的调试并希望将项目环境迁移至其他(训练)服务器时,操作流程相当简单明了,您只需将容器封装为镜像文件,并将该文件迁移到新服务器,之后基于该镜像重新创建容器即可。 首先,使用 `docker commit <container-id> <image-name>:<tag>` 命令来将正在运行的容器转换为新镜像: ```bash docker commit container_name image_demo:latest ``` 然后,利用 `docker save -o <image-name>.tar <image-name>:<tag>` 将这个新建的镜像存储为 .tar 压缩文件,这将便于后续的镜像传输工作: ```bash docker save -o image_demo.tar image_demo:latest ``` 最终,将这个 `.tar` 镜像文件传输至您的新服务器上,并在新服务器上使用 `docker load -i <image-name>.tar` 命令来加载并读取镜像文件: ```bash docker load -i image_demo.tar ``` 完成这些步骤后,便可以在新服务器无缝运行原容器中配置的环境,环境迁移过程简单高效。 Last modification:August 16, 2024 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏