当前位置: 首页 > news >正文

docker复现pytorch_cyclegan

1、安装docker

  • 配置docker镜像
    添加镜像源至docker engine

2、wsl2安装nvidia-docker

要在Ubuntu中安装NVIDIA Docker,需要满足以下条件:

  • 确保主机已安装NVIDIA的CUDA驱动程序,并使用适用于您操作系统的正确版本。
wsl --update

在Ubuntu中安装NVIDIA Docker的步骤如下:

  1. 确认系统已安装并正常工作Docker。如果未安装Docker,请先进行安装。
  2. 在终端中,运行以下命令添加NVIDIA Docker的apt仓库密钥:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
  1. 添加apt仓库。创建一个新的apt源文件,并将"main"和"stable"组件添加到文件中:
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
  1. 更新apt缓存并安装nvidia-docker2包:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
  1. 安装完成后,重启Docker服务:
sudo systemctl restart docker
  1. 使用以下命令检查是否正确安装了nvidia-docker2:
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi

运行此命令应该成功运行容器内的nvidia-smi命令,并显示GPU信息。如果一切正常,说明成功在Ubuntu中安装了NVIDIA Docker。

3、复现pytorch_cyclegan

(1) 构建DockerFile文件,写入语句

FROM nvidia/cuda:11.1.1-cudnn8-runtimeRUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub# 更新apt索引并安装所需工具
RUN apt update && apt install -y wget unzip curl bzip2 git
RUN curl -LO http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.shRUN bash Miniconda3-latest-Linux-x86_64.sh -p /miniconda -b
RUN rm Miniconda3-latest-Linux-x86_64.sh
ENV PATH=/miniconda/bin:${PATH}
RUN conda update -y conda# 创建新的conda环境并安装特定版本的pytorch和torchvision
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
RUN conda config --set show_channel_urls yes# 设置环境变量
ENV PATH="/opt/conda/bin:$PATH"
# RUN /opt/conda/bin/conda run -n cycle pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html 
# 激活环境并安装其他依赖
RUN mkdir /workspace/ && cd /workspace/ && git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git \&& cd pytorch-CycleGAN-and-pix2pix# 设置工作目录
WORKDIR /workspace

(2)存放至目录下便于构建

app
├── app/Dockerfile
├── app/app.py
└── app/requirements.txt

(3)运行命令构建镜像
进入app目录,

docker build -t [镜像名] .
# 假设我们有一个名为 my-base-image:latest 的本地镜像
docker build --build-arg BASE_IMAGE=my-base-image:latest -t my-app .

(4)根据镜像建立容器,在容器中安装对应的包

docker run -it --name [容器名] [镜像名] /bin/bash

待选步骤:
(5)安装包之后构建好了新的容器,commit提交存至新的镜像

docker commit -m "xx" [容器名] [镜像名]

(6)后面只需直接拉取镜像,并创建容器,就可直接运行

docker run --gpus all -it --name [容器名] [镜像名] /bin/bash
# 部分docker语句记录
docker run --gpus all -it --name yolov8_mount -v E:\BaiduNetdiskDownload\VOC07+12+test\VOCdevkit:/root/yolov8-pytorch/ --cpus="2.0" 7c69963d2d79:latest bashdocker run --gpus all -it --name yolov8_mount -v E:\BaiduNetdiskDownload\VOC07+12+test\VOCdevkit:/root/yolov8-pytorch/ --cpuset-cpus="0,1" 7c69963d2d79:latest bash

4、 已构建好的镜像参考

docker pull lin0011/cyclegan

参考链接:
1、【K8S】docker打过tag标签后向镜像仓库推送镜像(push)
https://blog.csdn.net/m0_45406092/article/details/103963974
2、Index of /compute/cuda/repos/ubuntu2004/x86_64
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/
3、nvidia/cuda:11.1.1-cudnn8-runtime
https://hub.docker.com/r/nvidia/cuda/tags?ordering=-last_updated
4、docker:machine learning
https://hub.docker.com/search?categories=Machine+Learning+%26+AI&page=3
5、CUDA Toolkit 11.1 Update 1 Downloads
https://developer.nvidia.com/cuda-11.1.1-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=2004&target_type=debnetwork
6、官方源码:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
7、如何指定dockerfile中From后的基础镜像从本地获取https://blog.csdn.net/muwan2900/article/details/139737060?spm=1001.2014.3001.5506
8、极智开发 | gpu docker启动报错libnvidia-ml.so.1: file exists: unknown
https://zhuanlan.zhihu.com/p/652588664
9、Visual Studio 的粘滞滚动功能是什么?
https://learn.microsoft.com/zh-cn/visualstudio/ide/editor-sticky-scroll?view=vs-2022

相关文章:

docker复现pytorch_cyclegan

1、安装docker 配置docker镜像 添加镜像源至docker engine 2、wsl2安装nvidia-docker 要在Ubuntu中安装NVIDIA Docker,需要满足以下条件: 确保主机已安装NVIDIA的CUDA驱动程序,并使用适用于您操作系统的正确版本。 wsl --update在Ubuntu…...

IDEA2024下安装kubernetes插件并配置进行使用

【1】安装插件 其实2024.2.3下默认已经安装了kubernetes插件,如果你发现自己IDEA中没有,在市场里面检索并下载即可。 【2】kubernetes配置 ① 前置工作 首先你要准备一个config文件和一个kubectl.exe 。 config文件类似如下: apiVersi…...

理解原子变量之二:从volatile到内存序-进一步的认识

目录 实例1 实例2 实例3 内存序中两个最重要的概念 补记 结论 实例1 看下面的例子&#xff1a;在vs2013中建立如下工程&#xff1a; #include <thread> #include <iostream> #include <chrono>bool done false;void worker(){std::this_thread::sle…...

DICOM标准:MR图像模块属性详解——磁共振成像(MR)在DICOM中的应用

目录 引言 磁共振成像&#xff08;MR&#xff09; 一、MR图像模块 二、MR图像属性描述 1、图像类型 (Image Type) 2、抽样每个象素 (Sampling per Pixel) 3、光度插值 (Photometric Interpretation) 4、位分配 (Bits Allocated) 结论 引言 数字成像和通信在医学&#xff08…...

Linux内核与用户空间

Linux内核与用户空间是Linux操作系统中的两个重要概念&#xff0c;它们各自承担着不同的功能和职责&#xff0c;并通过特定的机制进行交互。以下是对Linux内核与用户空间的详细解释&#xff1a; 一、Linux内核 定义&#xff1a;Linux内核是Linux操作系统的核心组件&#xff0c…...

计算机网络-以太网小结

前导码与帧开始分界符有什么区别? 前导码--解决帧同步/时钟同步问题 帧开始分界符-解决帧对界问题 集线器 集线器通过双绞线连接终端, 学校机房的里面就有集线器 这种方式仍然属于共享式以太网, 传播方式依然是广播 网桥: 工作特点: 1.如果转发表中存在数据接收方的端口信息…...

找树根和孩子c++

题目描述 给定一棵树&#xff0c;输出树的根root&#xff0c;孩子最多的结点max以及他的孩子 输入 第一行&#xff1a;n&#xff08;0<结点数<100&#xff09;&#xff0c;m&#xff08;0<边数<200&#xff09;。 以下m行&#xff1b;每行两个结点x和y&#xf…...

植物源UDP-糖基转移酶及其分子改造-文献精读75

植物源UDP-糖基转移酶及其分子改造 摘要 糖基化能够增加化合物的结构多样性,有效改善水溶性、药理活性和生物利用度,对植物天然产物的药物开发至关重要。UDP-糖基转移酶(UGTs)能够催化糖基从活化的核苷酸糖供体转移到受体形成糖苷键,植物中天然产物的糖基化修饰主要通过UGTs实…...

Redis中String 的底层实现是什么?

Redis中String 的底层实现是什么&#xff1f; Redis 是基于 C 语言编写的&#xff0c;但 Redis 的 String 类型的底层实现并不是 C 语言中的字符串&#xff08;即以空字符 \0 结尾的字符数组&#xff09;&#xff0c;而是自己编写了 SDS&#xff08;Simple Dynamic String&…...

像mysql一样查询es

先简单介绍一下这个sql查询&#xff0c;因为社区一直反馈这个Query DSL 实在是太难用了。大家可以感受一下下面这个es的查询。 GET /my_index/_search { “query”: { “bool”: { “must”: [ { “match”: { “title”: “search” } }, { “bool”: { “should”: [ { “te…...

SpringBoot中@Validated或@Valid注解校验的使用

文章目录 SpringBoot中Validated或Valid注解校验的使用1. 添加依赖2. 使用示例准备2-1 测试示例用到的类2-2 实体Dto&#xff0c;加入校验注解2-2 Controller 3. 示例测试4. Valid 和 Validated注解详解4-1 常用规则注解4-2 分组验证4-2-1 示例准备4-2-2 Controller接口4-2-3 P…...

HashMap为什么线程不安全?

一、Put操作&#xff08;数据覆盖&#xff09; HashMap底层是基于数组 链表&#xff08;在 Java 8 以后&#xff0c;当链表长度超过一定阈值时会转换为红黑树&#xff09;的数据结构。在多线程环境下&#xff0c;当多个线程同时对HashMap进行put操作时&#xff0c;可下面这种…...

类加载器及反射

目录 1.类加载器 1.1类加载【理解】 1.2类加载器【理解】 1.2.1类加载器的作用 1.2.2JVM的类加载机制 1.2.3Java中的内置类加载器 1.2.4ClassLoader 中的两个方法 2.反射 2.1反射的概述【理解】 2.2获取Class类对象的三种方式【应用】 2.2.1三种方式分类 2.2.2示例…...

aws boto3 下载文件

起因&#xff1a;有下载 aws s3 需求&#xff0c;但只有web 登录账号&#xff0c;有 id 用户名 密码&#xff0c;没有 boto3 的 key ID 经过分析&#xff0c;发现网页版有个地址会返回临时 keyID&#xff0c;playwright 模拟登录&#xff0c;用 page.on 监测返回数据&#xff…...

3DDFA-V3——基于人脸分割几何信息指导下的三维人脸重建

1. 研究背景 从二维图像中重建三维人脸是计算机视觉研究的一项关键任务。在虚拟现实、医疗美容、计算机生成图像等领域中&#xff0c;研究人员通常依赖三维可变形模型&#xff08;3DMM&#xff09;进行人脸重建&#xff0c;以定位面部特征和捕捉表情。然而&#xff0c;现有的方…...

求串长(不使用任何字符串库函数)

问题描述 编写一个程序&#xff0c;输入一个字符串&#xff0c;输出串的长度。 要求&#xff1a; &#xff08;1&#xff09;字符串长度不超过100个字符。 &#xff08;2&#xff09;不使用任何字符串库函数&#xff0c;建议使用堆串存储结构。 输入描述 输入一个字符串。 …...

第02章 MySQL环境搭建

一、MySQL的卸载 如果安装mysql时出现问题&#xff0c;则需要将mysql卸载干净再重新安装。如果卸载不干净&#xff0c;仍然会报错安装不成功。 步骤1&#xff1a;停止MySQL服务 在卸载之前&#xff0c;先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0…...

linux系统编程 man查看manual.stat

获取文件属性&#xff0c;&#xff08;从inode结构体中获取&#xff09; stat/lstat 函数 int stat(const char *path, struct stat *buf); 参数&#xff1a; path&#xff1a; 文件路径 buf&#xff1a;&#xff08;传出参数&#xff09; 存放文件属性&#xff0c;inode结构体…...

从网络到缓存:在Android中高效管理图片加载

文章目录 在Android应用中实现图片缓存和下载项目结构使用 代码解析关键功能解析1. 图片加载方法2. 下载图片3. 保存图片到缓存4. 文件名提取 总结 首先我们需要在配置AndroidManifest.xml里面添加 <uses-permission android:name"android.permission.INTERNET" …...

【数据结构】链表详解:数据节点的链接原理

链表&#xff08;Linked List&#xff09;是一种基础的数据结构&#xff0c;是程序设计中用来存储数据的典型方法之一。链表特别适合插入和删除操作频繁的场景&#xff0c;是了解数据结构和算法的基础。本文将从零开始&#xff0c;带大家了解链表的底层原理、类型&#xff08;单…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...