GNDNET的相关配置
本文为记录毕业设计三维点云学习中论文GNDNET:Fast Ground plane Estimation and Point Cloud Segmentation for Autonomous Vehicles代码的学习。
安装VSCODE
安装python3.6
sudo add-apt-repository ppa:deadsnakes/ppa 添加3.6的源
sudo apt-get update 更新
sudo apt-get install python3.6 安装
此处已经安装完成,如过想要使用python3.6 需要修改python的优先级
su root 进入root模式
# update-alternatives --list python
update-alternatives: error: no alternatives ` `for` `python
如果出现以上所示的错误信息,则表示 Python 的替代版本尚未被 update-alternatives 命令识别。想解决这个问题,我们需要更新一下替代列表,将 python2.7 和 python3.4 放入其中。
# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2 .7 to provide /usr/bin/python (python) in auto mode
# update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
update-alternatives: using /usr/bin/python3 .4 to provide /usr/bin/python (python) in auto mode
接下来,我们再次同第一次的步骤,我们可以列出可用的 Python 替代版本。
update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.5
/usr/bin/python3.6
现在开始,我们就可以使用下方的命令随时在列出的 Python 替代版本中任意切换了。
update-alternatives --config python
3、移除替代版本
一旦我们的系统中不再存在某个 Python 的替代版本时,我们可以将其从 update-alternatives 列表中删除掉。例如,我们可以将列表中的 python2.7 版本移除掉。
# update-alternatives --remove python /usr/bin/python2.7
update-alternatives: removing manually selected alternative - switching python to auto mode
update-alternatives: using /usr/bin/python3 .4 to provide /usr/bin/python (python) in auto mode
引用自 blog.csdn.net/kukudehui/a…
改变python的优先级
sudo update-alternatives --config python
注: 以前在配置环境时为了强制使用python3,在bashrc文件中加了一句echo alias python=python3 >> ~/.bashrc 导致每次搜索python的路径都先查找python3.5.2
如果发现方法一直不成功,可以检查一下bashrc文件等地方有没有强制的命令
更新nvidia驱动
以前为了兼容cuda9.0配置了低版本的nvidia384,这次需要安装cuda10.0,所以得更新nvidia
参考https://blog.csdn.net/ghw15221836342/article/details/79571559/
*查看版本驱动*
下载适合自己版本的run文件
sudo apt-get remove --purge nvidia* 卸载原有版本
禁用nouveau:
sudo gedit /etc/modprobe.d/blacklist.conf
在最后一行添加:
blacklist nouveau
之后,执行命令:
sudo update-initramfs -u
电脑重启之后执行
lsmod | grep nouveau #没有输出,即说明安装成功
然后
进入命令行界面 Ctrl-Alt+F1,输入用户名和密码登录。
sudo service lightdm stop
关闭图形界面
-
cd Downloads sudo chmod a+x NVIDIA-Linux-x86_64-470.20.run
安装(注意 参数)
sudo ./NVIDIA-Linux-x86_64-375.20.run –no-opengl-files
–no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
–no-x-check 安装驱动时不检查X服务
–no-nouveau-check 安装驱动时不检查nouveau
后面两个参数可不加。
sudo service lightdm stop
打开图形界面
cuda兼容配置
因为本身已经安装了cuda9.0,而GNDnet推荐是cuda10.0 涉及一个CUDA 的兼容问题。
一定要参考官方文档
一定要参考官方文档
一定要参考官方文档
官网https://developer.nvidia.com/cuda-toolkit-archive 选择需要的cuda版本
developer.nvidia.com/cuda-90-dow…
参考博客blog.csdn.net/qq_25241325…
1.预安装准备
1.1 验证有支持CUDA的GPU
lspci | grep -i nvidia
如果有nvidia的驱动,则表明GPU支持
1.2 验证有支持CUDA的Linux版本
uname -m && cat /etc/*release
如果是x86_64则表明确实是64位Linux系统,支持
1.3 验证系统有安装gcc
gcc --version
如果没有报错,说明gcc安装正常,支持
1.4 验证系统是否安装了正确的内核头文件和开发包
uname -r
结果表明我的内核为: 4.15.0-45-generic
cuda安装
runfile安装法(不推荐)
wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run 下载runfile文件
run 失败 问题有点奇怪 暂时没想好解决方法
deb安装法
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pinsudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1604-10-1-local-10.1.243-418.87.00_1.0-1_amd64.debsudo dpkg -i cuda-repo-ubuntu1604-10-1-local-10.1.243-418.87.00_1.0-1_amd64.debsudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pubsudo apt-get updatesudo apt-get -y install cuda
4.1 必须完成的工作
4.1.1 环境配置
打开profile文件,在文件末尾添加路径
sudo gedit /etc/profile
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH
保存后重启电脑即可.
5.验证
5.1 验证驱动版本
cat /proc/driver/nvidia/version
显示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 418.87.00 Thu Aug 8 15:35:46 CDT 2019
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
版本正常
5.2 验证CUDA Toolkit
nvcc -V
显示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 418.87.00 Thu Aug 8 15:35:46 CDT 2019
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
表明安装成功。
如果显示找不到ncvv命令,可以参考这篇博客https://blog.csdn.net/rtygbwwwerr/article/details/73656876
5.3 验证CUDA的测试用例
cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
显示关于GPU的信息,安装成功!!
一些问题
因为更新nvidia版本,导致nvidia和cuda之间的链接坏了,具体表现为nvidia-cuda-dev不能使用
执行安装命令
sudo apt-get -f install
时遇到问题
正准备解包 .../nvidia-cuda-dev_7.5.18-0ubuntu1_amd64.deb ...
正在解包 nvidia-cuda-dev (7.5.18-0ubuntu1) ...
dpkg: 处理归档 /var/cache/apt/archives/nvidia-cuda-dev_7.5.18-0ubuntu1_amd64.deb (--unpack)时出错:
正试图覆盖 /usr/lib/x86_64-linux-gnu/stubs/libcublas.so,它同时被包含于软件包 libcublas-dev 10.2.1.243-1
dpkg-deb:错误:子进程 粘贴 被信号(断开的管道) 终止了
在处理时有错误发生:
/var/cache/apt/archives/nvidia-cuda-dev_7.5.18-0ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决方法 fileneame改为出问题的名字
sudo dpkg -i --force-overwrite <filename>
例如 本文问题中 解决方法为
sudo dpkg -i --force-overwrite /var/cache/apt/archives/nvidia-cuda-dev_7.5.18-0ubuntu1_amd64.deb
随后就可以正常运行
nvcc -V 和 nvidia-smi显示版本不同的问题https://www.cnblogs.com/lb-blogs/p/15232769.html
ubuntu16.04安装cuDNN
官方安装地址 developer.nvidia.com/cudnn
官方安装教程docs.nvidia.com/cuda/cuda-i…(即我下载的那个pdf)
tar xvzf cudnn-10.1-linux-x64-v7.6.5.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*
sudo ldconfig
注:/usr/local/cuda 是 /usr/local/cuda-11.0的软连接,所以拷贝到哪个下面都一样
安装pycharm
下载安装包
在下面打链接中下载安装包:
有两个版本,Linux下的社区版和专业版,社区版是开源的,免费的,专业版是免费体验的。
配置docker
x详见官方教程 www.runoob.com/docker/ubun…
blog.csdn.net/ambm29/arti… 使用docker搭建深度学习环境-从零开始(下)
首先卸载旧版本的docker
sudo apt-get remove docker docker-engine docker.io containerd runc
接下来通过docker仓库进行安装 首先设置仓库
设置仓库
更新 apt 包索引。
$ sudo apt-get update
安装 apt 依赖包,用于通过HTTPS来获取仓库:
$ sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
添加 Docker 的官方 GPG 密钥:
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown**]** Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
使用以下指令设置稳定版仓库
$ sudo add-apt-repository
"deb [arch=amd64] mirrors.ustc.edu.cn/docker-ce/l… **\
** $(lsb_release -cs) **\
** stable"
安装 Docker Engine-Community
更新 apt 包索引。
$ sudo apt-get update
安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:
$ apt-cache madison docker-ce
docker-ce | 5:18.09.13-0ubuntu-xenial | https:**//mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.03-0ubuntu-xenial | https: //mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.1ce3-0~ubuntu | https: //mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.0ce3-0~ubuntu | https: //mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/**stable amd64 Packages
…
使用第二列中的版本字符串安装特定版本,例如 5:18.09.13-0ubuntu-xenial。
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:
rui@rui-GL502VML:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
docker的一些笔记
官方指导教程https://docs.docker.com/engine/install/ubuntu/
说了这么多, Docker 到底是个什么东西呢?我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机。
可能很多读者朋友都用过虚拟机,而对容器这个概念比较的陌生。我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件。
每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。
每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。
通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。
容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。
容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。
通过下面这幅图,我们可以很直观的反映出这两者的区别所在:
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
而 Linux 容器是 Linux 发展出的另一种虚拟化技术,简单来讲, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。
对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。
程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker 的优势
Docker 相比于传统虚拟化方式具有更多的优势:
- Docker 启动快速属于秒级别。虚拟机通常需要几分钟去启动。
- Docker 需要的资源更少。Docker 在操作系统级别进行虚拟化,Docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化。
- Docker 更轻量。Docker 的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker 运行的镜像数远多于虚拟机数量,对系统的利用率非常高。
- 与虚拟机相比,Docker 隔离性更弱。Docker 属于进程之间的隔离,虚拟机可实现系统级别隔离。
- 安全性。Docker 的安全性也更弱,Docker 的租户 Root 和宿主机 Root 等同,一旦容器内的用户从普通用户权限提升为 Root 权限,它就直接具备了宿主机的 Root 权限,进而可进行无限制的操作。
- 虚拟机租户 Root 权限和宿主机的 Root 虚拟机权限是分离的,并且虚拟机利用如 Intel 的 VT-d 和 VT-x 的 ring-1 硬件隔离技术。
- 这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击。
- 可管理性。Docker 的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如 VMware vCenter 提供完备的虚拟机管理能力。
- 高可用和可恢复性。Docker 对业务的高可用支持是通过快速重新部署实现的。
- 虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制, VMware 可承诺虚拟机 99.999% 高可用,保证业务连续性。
- 快速创建、删除。虚拟化创建是分钟级别的,Docker 容器创建是秒级别的,Docker 的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间
- 交付、部署。虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化。Docker 在 Dockerfile 中记录了容器构建过程,可在集群中实现快速分发和快速部署。
我们可以从下面这张表格很清楚地看到容器相比于传统虚拟机的特性的优势所在:
Docker 的三个基本概念
从上图我们可以看到,Docker 中包括三个基本的概念:
- Image(镜像)
- Container(容器)
- Repository(仓库)
镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是 Docker 的核心。
Image(镜像)
那么镜像到底是什么呢?Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义:
从左边我们看到了多个只读层,它们重叠在一起。除了最下面一层,其他层都会有一个指针指向下一层。这些层是 Docker 内部的实现细节,并且能够在主机的文件系统上访问到。
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角。
这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。我们可以在图片的右边看到这个视角的形式。
Container(容器)
容器(Container)的定义和镜像(Image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
由于容器的定义并没有提及是否要运行容器,所以实际上,容器 = 镜像 + 读写层。
Repository(仓库)
Docker 仓库是集中存放镜像文件的场所。镜像构建完成后,可以很容易的在当前宿主上运行。
但是, 如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry(仓库注册服务器)就是这样的服务。
有时候会把仓库(Repository)和仓库注册服务器(Registry)混为一谈,并不严格区分。
Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
实际上,一个 Docker Registry 中可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应着一个镜像。
所以说,镜像仓库是 Docker 用来集中存放镜像文件的地方,类似于我们之前常用的代码仓库。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。
我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 Latest 作为默认标签。
仓库又可以分为两种形式:
- Public(公有仓库)
- Private(私有仓库)
Docker Registry 公有仓库是开放给用户使用、允许用户管理镜像的 Registry 服务。
一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry 镜像,可以直接使用做为私有 Registry 服务。
当用户创建了自己的镜像之后就可以使用 Push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 Pull 下来就可以了。
我们主要把 Docker 的一些常见概念如 Image,Container,Repository 做了详细的阐述,也从传统虚拟化方式的角度阐述了 Docker 的优势。
我们从下图可以直观地看到 Docker 的架构:
Docker 使用 C/S 结构,即客户端/服务器体系结构。Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。
Docker 客户端和服务端可以运行在一台机器上,也可以通过 RESTful 、 Stock 或网络接口与远程 Docker 服务端进行通信。
这张图展示了 Docker 客户端、服务端和 Docker 仓库(即 Docker Hub 和 Docker Cloud ),默认情况下 Docker 会在 Docker 中央仓库寻找镜像文件。
这种利用仓库管理镜像的设计理念类似于 Git ,当然这个仓库是可以通过修改配置来指定的,甚至我们可以创建我们自己的私有仓库。
docker使用
详见 官方参考文档https://www.runoob.com/docker/docker-hello-world.html
遇到问题1
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
解决
原因
Manage Docker as a non-root user
The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.
If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
docker进程使用 Unix Socket 而不是 TCP 端口。而默认情况下,Unix socket 属于 root 用户,因此需要 root权限 才能访问。
解决办法
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $XXX docker #检测当前用户是否已经在docker用户组中,其中XXX为用户名,例如我的,liangll
sudo gpasswd -a $USER docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
遇到问题2
卸载docker镜像时遇到问题
Error response from daemon: conflict: unable to remove repository reference “ubuntu:18.10” (must force) - container be045c20f065 is using its referenced image 9dc19675e327
问题的原因是当前容器正在运行,需要停止容器运行再进行卸载
列出所有运行或没有运行的镜像
docker ps -a
停止container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
删除所有的容器
随后再删除就没有问题了
rui@rui-GL502VML:docker rmi ubuntu:18.10
Untagged: ubuntu:18.10
Untagged: ubuntu@sha256:7d657275047118bb77b052c4c0ae43e8a289ca2879ebfa78a703c93aa8fd686c
Deleted: sha256:9dc19675e3276d9c028f64ba9a3fbb41e72c779faf8a35603f597310077ffd08
Deleted: sha256:1724b80c4d56df448986920df38be4180f53f2b541272ea4bfd295effd46d643
Deleted: sha256:e8964a4948e34f0b4e4142a6e9639dce955f3541038cc63784bbdba509e3f11a
Deleted: sha256:147c381f69f60b8d21926c2474cc62ac16b485466b9c69ac776ddd76827a8471
Deleted: sha256:d33f208862dd35ea0d843ea338eedf2b5504220e0bc9aa2275a86f97241b2d9b
下载安装 Nvidia-docker
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
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
检查安装结果
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
安装anconda
注:不建议把anconda加入到gedit文件中,即ubuntu下shell中切换为anaconda解释器
anconda 中虚拟环境还是非常给力的,但是安装anconda中不存在的包可能会出问题,导致无法解决
mirrors.tuna.tsinghua.edu.cn/help/anacon… 清华源下载anconda
一些问题
使用anconda创建环境时爆出错误
NotWritableError: The current user does not have write permissions to a required path.
path: /home/rui/.conda/envs/.conda_envs_dir_test
uid: 1000
gid: 1000
If you feel that permissions on this path are set incorrectly, you can manually
change them by executing
$ sudo chown 1000:1000 /home/rui/.conda/envs/.conda_envs_dir_test
In general, it's not advisable to use 'sudo conda'.
anaconda安装pytorch时出现问题
-
Collecting package metadata (current_repodata.json): done Solving environment: \ The environment is inconsistent, please check the package plan carefully The following packages are causing the inconsistency: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::freetype==2.10.4=h0708190_1 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::libuv==1.42.0=h7f98852_0 - defaults/linux-64::libffi==3.3=he6710b0_2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::libopenblas==0.3.17=pthreads_h8fe5266_1 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::libblas==3.9.0=11_linux64_openblas - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/noarch::olefile==0.46=pyh9f0ad1d_1 - defaults/linux-64::readline==8.1=h27cfd23_0 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::lame==3.100=h7f98852_1001 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::numpy==1.19.5=py36hfc0c790_2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::libtiff==4.0.10=hc3755c2_1005 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64::gnutls==3.6.13=h85f3911_1
可能的原因
安装Anaconda的时候使用了root权限,所以现在非root用户没有对anaconda3文件夹的读写权限。
在终端cd到anaconda3位置,sudo操作
sudo chown -R username anaconda3 #username为自己的用户名
pycharm+anconda虚拟环境配置
在anaconda虚拟环境下安装环境pytorch1.4等
pytorch.org/get-started… pytorch官方网址
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch
一些问题 pytorch的gpu一直无法使用
网上有人说时nvidia驱动的问题,但是nvidia-smi一切正常
MD 明天再看看吧
torch.cuda.is_available()
False
MD,看了好久一直解决不了,结果发现anaconda自动装的是cpu版本的
踩坑: 每次选择的是 pytorch-gpu版安装,但是anconda自动变成了cpu版
pytorch pytorch/linux-64::pytorch-1.4.0-py3.6_cpu_0
可能原因
conda list中莫名其妙存在一个cpuonly,导致自动默认安装cpu版本,疑似之前安装了cpu版本的pytorch导致
解决方案
卸载cpuonly即可
conda uninstall cpuonly
出现问题 发现anaconda蹦了
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
解决方法
进入base环境
conda acitivate base
conda install anaconda
conda update conda
问题
-
PackagesNotFoundError: The following packages are not available from current channels: - cudatoolkit=10.1 Current channels: - https://conda.anaconda.org/pytorch/linux-64 - https://conda.anaconda.org/pytorch/noarch简单来说 就是现在的源里面不包含cudatoolkit 加入新源就行。
终于终于 在最后配好了
py3.6_cuda10.1.243_cudnn7.6.3_0
torch.cuda.is_available()
True
终于好了 我TMD要吐血了