Google Colab是一种在线的开发环境,它基于Jupyter Notebook,可以在浏览器中运行Python代码。Colab提供了一个具有CPU和GPU支持的云端运行环境,用户可以免费使用。
目录
序言
google colab简单来说就是可以免费使用,远程服务器是方便,但免费资源我们也别错过。登陆上去colab默认的库都是最新的,输入命令:
!pip list
其中,“ipython 7.34.0”、“torch 2.1.0+cu121”、“torchvision 0.16.0+cu121”是colab默认提供近期release的版本,但可能并不是我们所需要的运行环境版本,在不一样的环境下运行代码大概率是有问题的。
这里我们使用的“!pip list”命令,比常用的python软件命令行前面增加感叹号“!”,是由于google colab和Jupyter Notebook一样都是用Notebook界面,代码前增加感叹号(!)用于执行shell命令,而不是Python命令。其中,“torch 2.1.0+cu121”表示Pytorch版本号2.1.0,+cu121指明Pytorch库编译时所使用的CUDA版本,这里采用CUDA12.1进行优化。
需要注意的是,colab默认没有安装conda环境,如果我们使用:
!conda list
则会报错
准备安装的pytorch环境
笔者准备在pytorch上安装的环境如下:
序号 | 环境 | 版本 |
1 | Python | 3.6 |
2 | Torch | 1.2.0 |
3 | Torchvision | 0.4.0 |
思维整理
错误思维回顾
笔者对colab基于Jupyter nootbook Shell命令了解不够深刻,依旧采用Python应用程序标准解释器思维如下:
1.卸载原有的ipython==7.34.0
!pip uninstall ipython==7.34.0
交互式会话选择“Y”。
成功卸载ipython==7.34.0,输入命令:
!pip list
与上述对比确定安装包已经卸载。
2.安装python==3.6
!pip install E:\python-3.8.10-amd64.exe
有点异想天开了,然后查了些资料就在想能不能用远程服务器的miniconda来安装特定的环境。
3.安装miniconda
下载Miniconda,你可以使用以下代码在 Google Colab 中下载 Miniconda 安装脚本:
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
安装Miniconda,下载完成后,你需要将 Miniconda 安装脚本设置为可执行,并执行安装。运行以下代码:
!chmod +x Miniconda3-latest-Linux-x86_64.sh
!bash Miniconda3-latest-Linux-x86_64.sh -b -p /usr/local -f
成功在colab上安装了Miniconda。
4.再次使用conda命令安装python==3.6
先创建conda环境“Leo”(python==3.6),这里的做法就熟悉起来了:
!conda create -n Leo python=3.6
这里我的环境名称“Leo”,你可以自己取。
这里就安装成功了“Leo”环境,输入
!conda env list
5.激活安装的环境python==3.6
“Leo”环境安装成功,python==3.6。但这里才用colab提供的激活环境指令不行,搞不懂。
查找了半天,查到了用“!source”命令来执行,通常情况下,执行脚本文件时,会启动一个新的子 shell 来执行其中的命令,而 source
命令则是在当前 shell 中执行脚本中的命令,不会启动新的子 shell。这是啥意思???先不管了。执行~
!source activate Leo
!python --version
于是乎,还是python==3.11.5,这什么情况。对哦,还是有个魔法指令
%conda activate python3.6
也不可以
然后我认真的研究了下面这段话(这可比焊接画板子难啊!):
通常情况下,执行脚本文件时,会启动一个新的子 shell 来执行其中的命令,而
source
命令则是在当前 shell 中执行脚本中的命令,不会启动新的子 shell。
大概意思就是colab以这种方式激活只要当前cell中有用,下一个就没用了。过程中还试了乱七八糟的,如果要在当前的cell中输出“Leo”环境下的python==3.6。应该这样
!source /usr/local/etc/profile.d/conda.sh && conda activate Leo && echo $CONDA_DEFAULT_ENV
结果如下:
em....那这样有什么用。
这段指令就是
- 使用
source
命令加载了/usr/local/etc/profile.d/conda.sh
脚本文件,该文件包含了与 Conda 相关的环境变量设置和函数定义。 - 使用
conda activate Leo
命令激活了名为 "Leo" 的 Conda 环境。 - 使用
echo $CONDA_DEFAULT_ENV
命令打印了当前活动的 Conda 环境的名称。
到这里我就放弃自己研究了,也不能说一点收获都没,这个过程中,还是了解了很多关于jupyter、colab的原理应用的。
正确思维
这么好的免费资源,环境不符合自己要求难道就放弃,我肯,大佬们也不肯啊。于是乎,参考优秀博文整理思路
- 查看当前的cuda版本;
- 卸载当前Colab的CUDA;
- 去官网下载对应的cuda版本,离线安装;
- 根据cuda版本安装cudnn;
- 查看torch对应的python版本,安装python3.6的版本。
Pytorch环境配置步骤
卸载当前CUDA环境
Pytorch环境配置需要版本torch==1.2.0,官方推荐版本cuda==10.0,与cuda10.0对应的cudnn==7.4.1。
查看当前colab中的cuda版本
!nvcc --version
根据上述输出信息,已经安装cuda编译工具cuda==12.2版本,发布版本号V12.2.140。这并非我们所需要的cuda==10.0,将其卸载。
!apt-get --purge remove cuda nvidia* libnvidia-*
!dpkg -l | grep cuda- | awk '{print $2}' | xargs -n1 dpkg --purge
!apt-get remove cuda-*
!apt autoremove
!apt-get update
!apt-get --purge remove cuda nvidia* libnvidia-*
: 移除CUDA和NVIDIA驱动程序相关的软件包。!dpkg -l | grep cuda- | awk '{print $2}' | xargs -n1 dpkg --purge
: 查找以"cuda-"开头的软件包并卸载它们。!apt-get remove cuda-*
: 移除以"cuda-"开头的所有软件包。!apt autoremove
: 自动移除不再需要的依赖包。!apt-get update
: 更新软件包列表。
查看colab的Ubuntu版本:
!lsb_release -a
可以看到系统是运行 Ubuntu 22.04.3 LTS版本,代号为 Jammy。
官网下载需要的CUDA版本并安装
根据colab的Ubantu版本去官网下载对应所需要的cuda版本,colab系统版本是Ubuntu 22,下载Ubuntu 16的版本不影响的。
安裝下载的cuda==10.0,这里研究了好久,参考之前博文的代码如下:
!wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
!dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
!apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
!apt-get update
!apt-get install cuda=9.0.176-1
进行更改:
# 下载CUDA 10.0安装包
!wget --no-clobber https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64
# 安装CUDA包
!dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64
# 添加CUDA 10.0的公钥
!sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub
# 更新apt源
!apt-get update
# 安装CUDA 10.0
!apt-get install cuda=10.0.130-1
或是将下载好的cuda==10.0进行本地安装,都没有成功,有各种错误。
经过各路参考,有位优秀博主博文
更改Colab的CUDA以及cudnnhttps://blog.csdn.net/qq_46521210/article/details/122211173中间提到代码:
#Download CUDA 10.0
!wget --no-clobber https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64
#install CUDA kit dpkg
!dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64
!sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub
!apt-get update
!apt-get install **cuda-10-0**
运行这段代码就成功了:
-
使用wget命令下载CUDA 10.0的安装包。!wget --no-clobber https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64
:--no-clobber
选项用于避免覆盖已经存在的文件,以防止重复下载。 -
使用dpkg命令安装下载的CUDA安装包。!dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64
: -
将CUDA存储库的公钥添加到系统的APT密钥环中,以确保后续的软件包下载和安装可以进行验证。!sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub
: -
更新APT软件包列表,以便系统知道可用的软件包版本和更新。!apt-get update
: -
使用apt-get命令安装CUDA 10.0工具包。这个命令将会安装CUDA 10.0的所有相关软件包。!apt-get install **cuda-10-0**
:
!apt-get install **cuda-10-0**是强制系统安装CUDA10.0,一定要记得加**,否则系统将会安装CUDA的最新版本!!!!!
这个过程运行的很慢,大概7~8分钟,结果如下:
得到我所需要的cuda==10.0的环境。
安装cudnn
CUDA深度神经网络库CuDNN(CUDA Deep Neural Network library)是NVIDIA提供的用于深度神经网络的加速库。它包含了一系列针对深度神经网络的高效实现,可以在NVIDIA的GPU上加速神经网络的训练和推断过程。CuDNN提供了各种深度学习框架(如TensorFlow、PyTorch、Keras等)的加速接口,使得这些框架可以利用GPU的并行计算能力来加速神经网络的运算,包括卷积、池化、归一化、激活函数等操作。通过使用CuDNN,开发者可以更高效地训练和部署深度神经网络模型,加快模型迭代的速度并提高训练效率。
在NVIDIA官网下载对应CUDA10.0版本的cudnn库
将下载的cudnn上传到google driver中
在colab中找到cudnn-9.0-linux-x64-v7.4.1.5.tgz所在的工作目录,并且打开:
%cd /content/drive/MyDrive
按下面的命令安装本地cudnn-9.0-linux-x64-v7.4.1.5.tgz,.tar.gz文件是一种压缩文件格式,用于在Linux系统中打包和压缩文件。
!sudo tar -zxvf cudnn-9.0-linux-x64-v7.4.1.5.tgz
!sudo cp cuda/include/cudnn.h /usr/local/cuda/include
!sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
!sudo chmod a+r /usr/local/cuda/include/cudnn.h
!sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
-
sudo tar -zxvf cudnn-9.0-linux-x64-v7.4.1.5.tgz
: 这个命令用于解压缩名为cudnn-9.0-linux-x64-v7.4.1.5.tgz
的压缩文件。-zxvf
选项告诉tar命令解压文件并显示详细信息。 -
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
: 这个命令将cudnn.h
文件复制到 CUDA 的 include 目录下,通常是/usr/local/cuda/include
。 -
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
: 这个命令将libcudnn*
库文件复制到 CUDA 的 lib64 目录下,通常是/usr/local/cuda/lib64
。 -
sudo chmod a+r /usr/local/cuda/include/cudnn.h
: 这个命令更改 cudnn.h 文件的权限,确保所有用户都有读取权限。 -
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
: 这个命令更改 libcudnn* 库文件的权限,确保所有用户都有读取权限。
安装库成功,查看cudnn的版本。查看关于CUDNN_MAJOR 宏定义的信息,并显示该宏定义之后的 2 行内容。
!cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
根据显示cudnn结果,正式所需要的v7.4.1.5。
安装Pytorch对应的Python
在pytorch官网查看torch版本对应的python版本,依据下图所示,我们使用的pytorch==1.2.0应对应python==2.7,3.5,3.6,3.7。
查看colab当前的python版本(使用魔法命令):
!python --version
当前版本v3.10.12不符合要求,安装python==3.6。打开文件目录
%cd /content
下载并安装Python==3.6
# 下载python 3.6
%%bash
MINICONDA_INSTALLER_SCRIPT=Miniconda3-4.5.4-Linux-x86_64.sh
MINICONDA_PREFIX=/usr/local
wget https://repo.continuum.io/miniconda/$MINICONDA_INSTALLER_SCRIPT
chmod +x $MINICONDA_INSTALLER_SCRIPT
./$MINICONDA_INSTALLER_SCRIPT -b -f -p $MINICONDA_PREFIX
将 "/usr/local/lib/python3.6/site-packages" 路径添加到 Python 解释器的搜索路径中,使解释器能够找到该路径下的模块和包。
import sys
_ = (sys.path
.append("/usr/local/lib/python3.6/site-packages"))
安装Pytorch库
在线安装python==3.6对应的pytorch文件,这里笔者需要的是pytorch==1.2.0,torchvision==0.4.0。
# CUDA 10.0
!pip install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html
至此,所需要的pytorch==1.2.0、torchvision==0.4.0都已经安装完成。
结束语
colab安装的CUDA==10.0,cuddn==7.4.1.5,python==3.6.5,pytorch==1.2.0,torchvison==0.4.0都已经安装完毕。
研究了好几天,想白嫖个colab资源并且搭建自己想要的环境好累啊。别人成功实现的在你在不一定顺利,不断踩坑不断完善,留个mark记录以后备用,防止忘记~~~