首页 > 其他分享 >docker部署d2l环境

docker部署d2l环境

时间:2025-01-14 23:10:59浏览次数:1  
标签:RUN install 部署 -- conda d2l && docker

编写dockerfile

# 使用NVIDIA提供的CUDA基础镜像,包含CUDA 11.8.0和cuDNN 8,基于Ubuntu 22.04
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
# 设置维护者信息
MAINTAINER watcherprime <woma@126.com>

# 设置环境变量,包括时区、非交互式前端和PATH变量
ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive \
    PATH=/opt/miniconda3/bin:$PATH

# 设置工作目录为/root
WORKDIR /root

# 更新Ubuntu软件包索引
RUN apt-get update

# 安装SSH服务并配置
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y ssh \
    && mkdir /var/run/sshd && mkdir /root/.ssh \
    && echo 'root:root' | chpasswd \
    && sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config \
    && sed -i 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

# 创建并设置自启动SSH服务的脚本
RUN echo 'service ssh start >>/root/start_ssh.log' >> ~/start_ssh.sh \
    && chmod 777 ~/start_ssh.sh \
    && echo '#<<< ssh <<<\nif [ -f /root/start_ssh.sh ]; then\n/root/start_ssh.sh\nfi\n#<<< ssh <<<' >> ~/.bashrc

# 创建并设置自启动TensorBoard的脚本
RUN echo '#!/bin/bash\na=$(netstat -anp | grep 6006)\nif [ -z "$a" ]\nthen\nsource /opt/miniconda3/etc/profile.d/conda.sh\nconda activate d2l\nnohup python /opt/miniconda3/envs/d2l/lib/python3.10/site-packages/tensorboard/main.py --logdir /gemini/logs --bind_all > /root/start_tensorboard.log 2>&1 &\nfi' >> ./start_tensorboard.sh \
    && chmod 777 ./start_tensorboard.sh \
    && echo '#<<< tensorboard <<<\nif [ -f /root/start_tensorboard.sh ]; then\n/root/start_tensorboard.sh\nfi\n#<<< tensorboard <<<' >> ~/.bashrc

# 安装一些常用的工具
RUN apt-get install -y vim && apt-get install -y git && apt-get install -y net-tools

# 下载并安装Miniconda3
RUN wget -O /opt/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh "https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh"  \
    && chmod +x /opt/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh \
    && sh -c '/bin/echo -e "\nyes\n\nyes" | sh /opt/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh -b -p /opt/miniconda3'
ENV PATH=/opt/miniconda3/bin:$PATH

# 调整时区设置
RUN apt install -y tzdata \
    && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && dpkg-reconfigure --frontend noninteractive tzdata

# 更新conda源为清华大学镜像源
RUN 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/conda-forge/  \
    && conda config --set show_channel_urls yes \
    && conda config --set auto_activate_base no

# 创建conda环境d2l,并设置为默认环境
RUN conda create --name d2l python=3.10.13
SHELL ["/bin/bash", "--login", "-c"]

# 在新创建的conda环境中安装基础依赖项
RUN export PATH=/opt/miniconda3/bin:$PATH \
    && conda update --name base conda \
    && conda init bash \
    && source activate d2l \
    && conda activate d2l \
    && conda install -y --quiet numpy pyyaml mkl mkl-include setuptools cmake cffi typing \
    && conda install -y --quiet -c mingfeima mkldnn

# 升级pip并设置pip源为清华大学镜像源
RUN python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple  \
    && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装PyTorch和相关库
RUN pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple  \
    && pip install d2l jupyter

# 安装额外的依赖项,如ffmpeg等
RUN apt-get install -y ffmpeg libsm6 libxext6

# 创建项目目录结构
RUN mkdir /womacode && mkdir /womacode/code && mkdir /womacode/output

# 清理不必要的文件,减小镜像大小
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# 暴露SSH、TensorBoard和Jupyter Notebook的端口
EXPOSE 22
EXPOSE 6006
EXPOSE 8888

# 设置容器启动时执行的命令为bash
CMD ["bash"]

构建镜像

docker build -t torch2.1.1_cu118_py310_ubuntu22.04 -f Dockerfile .

打标签

docker tag torch2.1.1_cu118_py310_ubuntu22.04 watcherprime/deeplearn:Torch2.1.1_cu118_py310_ubuntu22.04

推送

docker push watcherprime/deeplearn:Torch2.1.1_cu118_py310_ubuntu22.04

启动

挂载宿主磁盘:/opt/project/code/python

docker run -it --gpus all -v /opt/project/code/python:/remote-home/python -p 9998:22 --name d2l_env --restart=always torch2.1.1_cu118_py310_ubuntu22.04
docker run -it --gpus all -p 9999:8080 --name d2l torch2.1.1_cu118_py310_ubuntu22.04

docker 进入 d2l 容器

docker exec -it d2l /bin/bash

测试环境是否生效

import torch
import d2l
print(torch.__version__)
print(torch.cuda.is_available())
print(d2l.__version__)

conda命令

#列出所有环境
conda env list

#激活环境
conda activate d2l

下载相关包

 pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1
pip install d2l jupyter

运行resNet测试

import torchvision
from torchvision import transforms
from torch.utils import data

def get_dataloader_workers():
    """使用6个进程来读取的数据"""
    return 6

trans = transforms.ToTensor()
def load_data_fashion_mnist(batch_size, resize=None):
    """下载Fashion-MNIST数据集,然后将其加载到内存中"""
    trans = [transforms.ToTensor()]
    if resize:
        trans.insert(0,transforms.Resize(resize)) # 如果有Resize参数传进来,就进行resize操作
    trans = transforms.Compose(trans)
    mnist_train = torchvision.datasets.FashionMNIST(root="01_data/01_DataSet_FashionMNIST",train=True,transform=trans,download=True)
    mnist_test = torchvision.datasets.FashionMNIST(root="01_data/01_DataSet_FashionMNIST",train=False,transform=trans,download=True)            
    return (data.DataLoader(mnist_train, batch_size, shuffle=True, num_workers=get_dataloader_workers()),
           data.DataLoader(mnist_train, batch_size, shuffle=True, num_workers=get_dataloader_workers()))               

# Fashion-MNIST图像的分辨率 低于ImageNet图像。将它们增加到96×96
batch_size = 256
train_iter, test_iter = load_data_fashion_mnist(batch_size, resize=96) # 返回训练集、测试集的迭代器   

# 训练模型
lr, num_epochs, batch_size = 0.05, 10, 256
# train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=96)  
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

image-20250106155821192

调用GPU成功运行!

标签:RUN,install,部署,--,conda,d2l,&&,docker
From: https://www.cnblogs.com/womaspace/p/18671873

相关文章

  • docker-compose自动部署go项目全流程,本地到镜像仓库到服务器,踩坑笔记
    声明:个人所学记录,有可以改进的地方希望不吝指教Dockerfile#使用golang官方镜像作为构建环境FROMgolang:1.23-alpineASbuilder#设置工作目录WORKDIR/app#设置环境变量镜像变量ENVGO111MODULE=onENVGOPROXY=https://goproxy.cn,direct#复制go.mod和go.sum文......
  • 基于Java的愤怒的小鸟游戏的设计与实现【源码+文档+部署讲解】
    目录摘要Abstract1 绪论1.1游戏开发的背景1.2典型的Java游戏介绍1.2.1Minecraft介绍1.2.2SuperMarioBros介绍1.2.3 TheSims介绍1.3 游戏开发的意义2开发环境2.1开发语言2.2开发工具2.3JDK介绍2.4Java Awt介绍2.5 Java Swi......
  • DOMjudge8.2.3配置DOMserver(基于Docker一键配置,全网最详细,看完包会配)
    文章目录前言配置方式1:手动配置nginx+php-fpm配置方式2:Docker一键安装1.部署MariaDB数据库2.部署DOMserver3.获取初始admin密码以及judgehost密码4.修改grub5.测试6.修改配置文件6.0前言(修改配置必看)6.1[configchecker]-MySQLsettings修改常见问题及对应解决......
  • FastGPT及大模型API(Docker)私有化部署指南
    FastGPT及大模型API(Docker)私有化部署指南​​经过优化,在不影响FastGPT功能的情况下,大幅降低了部署的设备配置要求,仅需1c1h即可正常部署使用。官方要求配置:​​优化后的实际占用情况:运行内存仅需370M(测试学习场景下)​​官方推荐部署容器:​pg​......
  • JSP连锁洗衣店管理系统svhw2(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景随着生活节奏的加快,连锁......
  • JSP离退休管理系统7z292--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、研究背景与意义随着人口老龄化趋......
  • JSP老年人日间照料中心管理系统a498n--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、研究背景与意义随着老龄化社会的......
  • Centos7.9离线部署ceph(octopus)
    原创文档编写不易,未经许可请勿转载,目前仅发布于博客园,其他平台均为非法转载。文档中有疑问的可以邮件联系我文章。邮箱:yinwanit@163.com说明文档适用于cenots7.9操作系统下部署cephoctopus版本分布式存储使用。离线部署的本质是先基于在线环境如vmwareworkstation虚拟机在线......
  • JSP辽宁省公务员考试模拟网站5e5k3(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、选题背景与意义随着信息技术的不......
  • JSP连锁超市商品销售管理系统设计与实现0sx6n--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求: 开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景随着连锁超市规模的不......