用两行命令快速搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),包含完整的 Docker 安装步骤

news2024/11/15 19:08:14

深度学习环境的配置过于繁琐,所以我制作了两个基础的镜像,希望可以帮助大家节省时间,你可以选择其中一种进行安装,版本说明:

  • base 版本基于 pytorch/pytorch:2.5.1-cuda11.8-cudnn9-devel,默认 python 版本为 3.11.10,可以通过 conda install python==版本号 直接修改版本。
  • dl 版本在 base 基础上,额外安装了深度学习框架和常用工具,具体查看附录的安装清单。

如果你已经配置好了Docker,只需两行命令即可完成深度学习环境的搭建。对于没有 Docker 的同学,也不用担心,本文将提供详细的安装指引,帮助你一步步完成环境配置

P.S. 所有命令在 Ubuntu 18.04/20.04/22.04 下可以顺利执行(其余系统可通过文内链接跳转安装)。

文章目录

  • 镜像介绍
  • 快速配置环境(两行命令)
    • 1. 获取镜像(三选一)
      • 国内镜像版
      • 🪜科学上网版(直连)
      • 本地(网盘下载)
    • 2. 运行容器
  • 安装 Docker Engine
    • 卸载旧版本
    • 使用 `apt` 仓库安装
  • GPU 驱动安装
  • 安装 NVIDIA Container Toolkit
  • 拉取并运行深度学习 Docker 镜像
  • 附录
    • 安装清单
      • base
      • dl

镜像介绍

所有版本都预装了 sudopipcondawgetcurlvim 等常用工具,且已经配置好 pipconda 的国内镜像源。同时,集成了 zsh 和一些实用的命令行插件(命令自动补全、语法高亮、以及目录跳转工具 z)。此外,已预装 jupyter notebookjupyter lab,方便进行深度学习开发,并优化了容器内的中文显示,避免出现乱码问题。其中还预配置了 Hugging Face 的国内镜像地址。

如果想修改命令行风格,基于关键词「oh-my-zsh」进行搜寻。

链接

  • quickstart,位于 Docker Hub,对应于下方的 pull 命令。
  • 百度云盘,直接下载对应的版本,跳过科学版的命令进行配置。

快速配置环境(两行命令)

如果遇到报错,查阅《Docker 基础命令介绍和常见报错解决》。

1. 获取镜像(三选一)

假设你已经安装并配置好了 Docker,那么只需两行命令即可完成深度学习的环境配置,以 dl 镜像为例,拉取:

国内镜像版

不可用的时候欢迎评论,我会对其进行替换。

sudo docker pull dockerpull.org/hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel

🪜科学上网版(直连)

sudo docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel

如果镜像有更新版本,可通过 docker pull 拉取最新镜像。

本地(网盘下载)

通过百度云盘下载文件(阿里云盘不支持分享大的压缩文件)。

同名文件内容相同,.tar.gz 为压缩版本,下载后通过以下命令解压:

gzip -d dl.tar.gz

假设 dl.tar 被下载到了 ~/Downloads 中,那么切换至对应目录:

cd ~/Downloads

然后加载镜像:

sudo docker load -i dl.tar

2. 运行容器

sudo docker run --gpus all -it --name ai hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh

如果需要使用 Jupyter,可以使用以下命令:

sudo docker run --gpus all -it --name ai -p 8888:8888 hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh

如果还没有安装 Docker,继续阅读,可以根据实际情况通过目录快速跳转。

安装 Docker Engine

对于图形界面来说,可以跳过下面的命令直接安装 Desktop 版本(其中会提供 Docker Engine),这是最简单的方法。根据系统访问:

  • Linux
  • Mac
  • Windows

以下是命令行的安装命令,在 Ubuntu 上运行,其余系统参考官方文档。

卸载旧版本

在安装 Docker Engine 之前,需要卸载所有有冲突的包,运行以下命令:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能会报告没有安装这些包,忽略即可。

注意,卸载 Docker 的时候,存储在 /var/lib/docker/ 中的镜像、容器、卷和网络不会被自动删除。如果你想从头开始全新安装,请阅读 Uninstall Docker Engine 部分。

使用 apt 仓库安装

首次安装 Docker Engine 之前,需要设置 Docker 的 apt 仓库。

  1. 设置 Docker 的 apt 仓库。

    # 添加 Docker 的官方 GPG 密钥:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # 将仓库添加到 Apt 源:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    

    如果你使用的是 Ubuntu 的衍生发行版,例如 Linux Mint,可能需要使用 UBUNTU_CODENAME 而不是 VERSION_CODENAME

    如果 sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc 执行失败,尝试以下命令:

    sudo wget -qO- https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc
    
  2. 安装 Docker 包。

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  3. 通过运行 hello-world 镜像来验证安装是否成功:

    sudo docker run hello-world
    

    这个命令会下载测试镜像并运行,如果你看到以下输出,那么恭喜你安装成功:

    image-20241113173220588

GPU 驱动安装

如果需要使用 GPU 的话,先安装适用于你的系统的 NVIDIA GPU 驱动程序,访问任一链接进行:

  • NVIDIA CUDA Installation Guide for Linux
  • Official Drivers

这部分配置文章很多,偷个懒 😃 就不开新环境演示了,下面讲点可能不同的。

安装 NVIDIA Container Toolkit

为了在 Docker 容器中使用 GPU,需要安装 NVIDIA Container Toolkit。

注意,我们现在不再需要安装 nvidia-docker,官方在 2023.10.20 指出其已被 NVIDIA Container Toolkit 所取代,过去的配置命令可能已不再适用。

以下命令使用 Apt 完成,Yum 等其他命令访问参考链接:Installing the NVIDIA Container Toolkit。

  1. 设置仓库和 GPG 密钥

    设置 NVIDIA 的软件源仓库和 GPG 密钥,确保我们可以从官方源安装 NVIDIA Container Toolkit。

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list。
    
  2. 安装 NVIDIA Container Toolkit

    sudo apt-get update
    sudo apt-get install -y nvidia-container-toolkit
    
  3. 配置 Docker

    使用 nvidia-ctk 工具将 NVIDIA 容器运行时配置为 Docker 的默认运行时。

    sudo nvidia-ctk runtime configure --runtime=docker
    
  4. 重启 Docker

    sudo systemctl restart docker
    

拉取并运行深度学习 Docker 镜像

现在可以拉取深度学习(dl)镜像,命令和之前一致。

  1. 拉取镜像

    sudo docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
    

    image-20241115163216096

  2. 运行镜像

    sudo docker run --gpus all -it hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
    
  3. 检查 GPU

    在容器内运行:

    nvidia-smi
    

    如果正确显示代表成功。不过对于实际使用来说,还需要了解基础命令和报错的解决方法。使用 Ctrl + D 或者命令行输入 exit 并回车退出容器,继续阅读《Docker 基础命令介绍和常见报错解决》。

附录

安装清单

base

基础环境

  • python 3.11.10
  • torch 2.5.1 + cuda 11.8 + cudnn 9

Apt 安装

  • wgetcurl:命令行下载工具
  • vimnano:文本编辑器
  • git:版本控制工具
  • git-lfs:Git LFS(大文件存储)
  • zipunzip:文件压缩和解压工具
  • htop:系统监控工具
  • tmuxscreen:会话管理工具
  • build-essential:编译工具(如 gccg++
  • net-tools:网络工具
  • ssh:远程连接工具
  • rsync:文件同步工具
  • tree:显示文件和目录树
  • lsof:查看当前系统打开的文件
  • aria2:多线程下载工具

pip 安装

  • jupyter notebookjupyter lab:交互式开发环境
  • virtualenv:Python 虚拟环境管理工具,可以直接用 conda
  • tensorboard:深度学习训练可视化工具
  • ipywidgets:Jupyter 小部件库,用以正确显示进度条

插件

  • zsh-autosuggestions:命令自动补全
  • zsh-syntax-highlighting:语法高亮
  • z:快速跳转目录

dl

dl(Deep Learning)版本在 base 基础上,额外安装了深度学习可能用到的基础工具和库:

Apt 安装

  • ffmpeg:音视频处理工具
  • libgl1-mesa-glx:图形库依赖(解决一些深度学习框架图形相关问题)

pip 安装

  • 数据科学库
    • numpyscipy:数值计算和科学计算
    • pandas:数据分析
    • matplotlibseaborn:数据可视化
    • scikit-learn:机器学习工具
  • 深度学习框架
    • tensorflowtensorflow-addons:另一种流行的深度学习框架
    • tf-keras:Keras 接口的 TensorFlow 实现
  • NLP 相关库
    • transformersdatasets:Hugging Face 提供的 NLP 工具
    • nltkspacy:自然语言处理工具

一些库在安装时被自动安装,如 tensorflow 中的 keras

如果需要额外的库,可以通过以下命令手动安装:

pip install --timeout 120 <替换成库名>

这里 --timeout 120 设置了 120 秒的超时时间,确保在网络不佳的情况下仍然有足够的时间进行安装。如果不进行设置,在国内的环境下可能会遇到安装包因下载超时而失败的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2241010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11个c语言编程练习题

0. 钞票和硬币 money.c 读取一个带有两个小数位的浮点数&#xff0c;代表货币价值。将该值分解为多种钞票和硬币的和&#xff0c;要求使用的钞票和硬币的总数量尽可能少。 货币面值有100&#xff0c;50&#xff0c;20&#xff0c;10&#xff0c;5&#xff0c;1&#xff0c;0.…

LaTeX之四:如何兼容中文(上手中文简历和中文论文)、在win/mac上安装新字体。

改成中文版 如果你已经修改了.cls文件和主文档&#xff0c;但编译后的PDF仍然显示英文版本&#xff0c;可能有以下几个原因&#xff1a; 编译器问题&#xff1a;确保你使用的是XeLaTeX或LuaLaTeX进行编译&#xff0c;因为它们对Unicode和中文支持更好。你可以在你的LaTeX编辑器…

K8S如何基于Istio实现全链路HTTPS

K8S如何基于Istio实现全链路HTTPS Istio 简介Istio 是什么?为什么选择 Istio?Istio 的核心概念Service Mesh(服务网格)Data Plane(数据平面)Sidecar Mode(边车模式)Ambient Mode(环境模式)Control Plane(控制平面)Istio 的架构与组件Envoy ProxyIstiod其他组件Istio 的流量管…

安全见闻-泷羽sec课程笔记

编程语言 C语言&#xff1a;一种通用的、面向过程的编程语言&#xff0c;广泛应用于系统软件和嵌入式开发。 C:在C语言基础上发展而来&#xff0c;支持面向对象编程&#xff0c;常用于尊戏开发、高性能计算等领域。 Java:一种广泛使用的面问对象编程语言&#xff0c;具有跨平台…

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用&#xff1a; inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…

LeetCode 热题100(八)【二叉树】(3)

目录 8.11二叉树展开为链表&#xff08;中等&#xff09; 8.12从前序与中序遍历序列构造二叉树&#xff08;中等&#xff09; 8.13路径总和III&#xff08;中等&#xff09; 8.14二叉树的最近公共祖先&#xff08;中等&#xff09; 8.15二叉树中的最大路径和&#xff08;困…

【C语言】Union

一.Union的用法 1.什么是Union? union 共用体名{ 成员列表 }; union&#xff0c;“联合体、共用体”&#xff0c;在某种程度上类似结构体struct的一种数据结构&#xff0c;共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。 2.为什么使用union&#xff1…

Postgresql源码(138)alter table增加列的执行流程分析

alter table 逻辑比较繁琐&#xff0c;但并不复杂&#xff0c;这里以增加列为例简单梳理流程。 测试用例 drop table t_echo; create table t_echo(a int,b int); insert into t_echo select t.i, t.i*10 from generate_series(1,10) t(i); alter table t_echo add c varchar…

MobaXterm 软件及如何设置取消自动断开连接

MobaXterm 软件及如何设置取消自动断开连接 背景软件资料取消自动断开连接找打设置找到SSH Setting 背景 其实很容易找到类似的资料, 主要为了简单的记录一下, 还是写一下这个博客吧, 也算是自己的输出了. 当练习打字也行吧, 反正自己打字也是一坨, 打字太慢了. 软件资料 官…

【代码审计】常见漏洞专项审计-业务逻辑漏洞审计

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; 网络安全、 Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 0x01 漏洞介绍 1、 原理 业务逻辑漏洞是一类特殊的安全漏洞&#xff0c;业务逻辑漏洞属于设计漏洞而非实…

YOLOv11实战垃圾分类

本文采用YOLOv11作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv11以其高效的特征提取能力&#xff0c;在多个图像分类任务中展现出卓越性能。本研究针对4种垃圾数据集进行训练和优化&#xff0c;该数据集包含丰富的垃圾图像样本&am…

Kafka集群中数据的存储是按照什么方式存储的?

1&#xff09;Topic 数据的存储机制 Topic是逻辑上的概念&#xff0c;而partition是物理上的概念&#xff0c;每个partition对应于一个log文件&#xff0c;该log文件中存储的就是Producer生产的数据。Producer生产的数据会被不断追加到该log文件末端&#xff0c;为防止log文件…

渗透测试靶场 - vulhub -CVE漏洞 Weblogic 任意文件上传漏洞(CVE-2018-2894) 漏洞讲解 漏洞复现 亲测步骤能通过哟

漏洞说明 Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞&#xff0c;可直接获取服务器权限。 两个页面 /ws_utc/begin.do /ws_utc/config.do Oracle 在2018年7月更新中&#xff0c;修复了Weblogic Web Service Test Page中一处任意文件上传漏洞&#xff0c; Web Se…

使用 PyTorch 实现 AlexNet 进行 MNIST 图像分类

AlexNet 是一种经典的深度学习模型&#xff0c;它在 2012 年的 ImageNet 图像分类比赛中大放异彩&#xff0c;彻底改变了计算机视觉领域的格局。AlexNet 的核心创新包括使用深度卷积神经网络&#xff08;CNN&#xff09;来处理图像&#xff0c;并采用了多个先进的技术如 ReLU 激…

基于图的去中心化社会推荐过滤器

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月11日19点20分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17176636216843&uideba758a1550b46bb…

深度学习模型评价指标介绍

模型评价指标 模型评价指标1.混淆矩阵2.Overall Accuracy3.Average accuracy4.Kappa系数5.Recall6.Precision7.F18.PR曲线9.置信度10.IOU11.AP12.mAP 模型评价指标 在我们学习机器学习以及深度学习&#xff0c;甚至在计算机视觉领域&#xff0c;我们不可避免的要利用一些指标评…

k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储

文章目录 [toc]docker registry 部署生成 htpasswd 文件生成 secret 文件 生成 registry 配置文件创建 service创建 statefulset创建 ingress验证 docker registry docker registry 监控docker registry ui docker registry dockerfile docker registry 配置文件 S3 storage dr…

【自用】0-1背包问题与完全背包问题的Java实现

引言 背包问题是计算机科学领域的一个经典优化问题&#xff0c;分为多种类型&#xff0c;其中最常见的是0-1背包问题和完全背包问题。这两种问题的核心在于如何在有限的空间内最大化收益&#xff0c;但它们之间存在一些关键的区别&#xff1a;0-1背包问题允许每个物品只能选择…

Zookeeper的安装与使用

一、简介 1.1、概念 ZooKeeper 是一个开源的分布式协调服务&#xff0c;主要用于解决分布式系统中的数据一致性问题。它提供了一种可靠的机制来管理和协调分布式系统的各个节点。ZooKeeper 的设计目标是简化分布式应用的开发&#xff0c;提供简单易用的接口和高性能、高稳定性…

【模块一】kubernetes容器编排进阶实战之etcd的介绍与使用

etcd进阶 etcd简介&#xff1a;  etcd是CoreOS团队于2013年6月发起的开源项目&#xff0c;它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法&#xff0c;etcd基于Go语言实现。 官方网站&#xff1a;https://etcd.io/  gith…