2024-2-7
复盘:https://github.com/CVLAB-Unibo/inr2vec?tab=readme-ov-file
# 前言
用的阿里云服务器
vscode-> 先下载扩展 remote-ssh
1 | #ssh username@公有ip |
进入终端
1 | mkdir cs |
发现没 conda
# 服务器安装 anaconda
# 下载 anaconda
后面的链接可以去官网查找自己适合的版本
1 | wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh |
.sh 为 Linux 后缀
——————————————————
如果出现
bash: wget: command not found
具体解决办法如下:
Debian/Ubuntu 系统,需要执行以下命令:
apt-get install -y wget
CentOS 系统则需要输入下面指令:
yum install wget -y
————————————————————
# 赋权 anaconda
接下来我们需要首先赋权再执行安装程序,依次输入下面两句命令:
1
2
3 chmod +x Anaconda3-5.3.0-Linux-x86_64.sh
./Anaconda3-5.3.0-Linux-x86_64.sh
然后出现下面图所示:
# 一直点击 Enter(回车键)
此时显示 Anaconda 的信息,并且会出现 More,继续按 Enter,直到如下图所示:
# 输入 yes
# 继续点击 Enter
# 输入 yes,添加环境变量
^^^^^^^^^^^^^^^^^^^^^^^^^^^
这里需要注意点的就是如果你直接跳过这部设置环境变量的话:
1 | [no ] >>> |
那你需要自己到这个文件夹设置你安装 Anaconda 路径
1 | find -name "anaconda3" |
(比如上面显示我的是)
1 | ./anaconda3 |
单击进去,在最后一行添加:
1 | export PATH=./anaconda3/bin:$PATH |
这里只是个示例,具体的还是要看你们自己安装的路径。
然后保存更改,输入下面这句指令:
1 | source ~/.bashrc |
—————————————————————
# 完成安装以及检测是否安装成功
打开新的终端后,进入自己的文件夹目录下,输入 anaconda -V(注意 a 要小写,V 要大写),conda -V ,
1 | conda -V |
显示版本信息,若显示则表示安装成功。
conda 4.5.11
# Anaconda 安装 Pytorch
# 创建虚拟环境
第一个程序环境名为 pytorch
1 | conda create -n pytorch python=3.7 (pytorch 是我自己取的名字) |
# 激活环境
使用下面这条命令,激活环境:
1 | conda activate pytorch |
# 可能出现的问题
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
出现下面所示 1:
问题出现是因为尽管安装了 Anaconda
或 Miniconda
,
但是你的 shell 环境没有被正确配置以识别 conda
命令。
解决办法:
启用
conda
命令:如果你使用的是 Bash shell 或者类似 Bourne 的 shell,你需要将
conda
的初始化脚本添加到你的 shell 配置文件中(通常是1
~/.bashrc
文件),以便
conda
命令可以被识别。根据提供的信息,你可以通过运行以下命令来做到这一点:1
echo ". /root/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc
这会将初始化脚本的路径添加到你的
1
~/.bashrc
文件中,每次启动新的 shell 会话时都会自动执行这个脚本。
激活
conda
的基础(root)环境:为了使用
conda
管理你的环境和包,你需要激活conda
的基础环境。你可以通过在终端中运行以下命令来做到这一点:1
conda activate
如果你想在每次打开新的终端会话时自动激活
conda
的基础环境,你可以将上述命令添加到你的1
~/.bashrc
文件中:
1
echo "conda activate" >> ~/.bashrc
移除旧的 PATH 设置:
如果你之前尝试通过直接修改
PATH
环境变量来使用conda
,你应该从你的1
~/.bashrc
文件中移除这样的行:
1
export PATH="/root/anaconda3/bin:$PATH"
这是因为直接修改
PATH
不再是推荐的方法,使用conda
的初始化脚本和conda activate
命令是更好的选择。
完成以上步骤后,关闭并重新打开你的终端,或者运行 source ~/.bashrc
来使改动生效。这样,你的 shell 环境就被正确配置了,应该能够识别 conda
命令了。
出现下面所示 2:
(pytorch) root@dev-wyf-react:~/wyf#
检测环境是否安装好:
1 | conda info --envs |
出现下面所示:
base /root/anaconda3
pytorch * /root/anaconda3/envs/pytorch
然后去选择适合自己的 pytorch 版本,点击下面那个链接:
https://pytorch.org/
get started
输入到控制台:
1 | conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia |
弹出提示,输入 y,即可完成安装,显示 “done”。
——————————————————————————————
# 测试安装成功
首先输入:
1 | python |
然后在输入:
1 | import torch |
如果没有可以重新下载康康或者查看环境
# 退出之后如何查看自己安装的环境
如果在一台服务器上安装多个环境,一下子可能不记得需要激活哪个环境名称,这时候我们需要使用下面这个命令来查找:
1 conda info --envs
# 复盘项目
打开
https://github.com/CVLAB-Unibo/inr2vec?tab=readme-ov-file
# 配置 git
1 | git --version |
如果已经安装过了就可以直接跳到 3.2 了
也不知道阿里云服务器什么发行版,输入如下命令查看
1 | cat /etc/*-release |
根据信息,Alibaba Cloud Linux 3 是一个与 RHEL(Red Hat Enterprise Linux)、Fedora 和 CentOS 兼容的发行版。
使用与这些发行版相同的包管理器,大多数情况下将是 yum
或者在某些新版本中是 dnf
。
以下命令来安装 git
:
1 | sudo yum update |
或者,如果系统支持 dnf
:
1 | sudo dnf update |
执行更新( yum update
或 dnf update
)是一个好习惯,它会确保所有的软件包都是最新的。然后,使用安装命令来安装 git
。
# git clone 代码
1 | git clone https://github.com/CVLAB-Unibo/inr2vec.git |
等一会儿就下好啦
# 创建对应的环境
!!!!以下内容仅作知识补充
# 创建虚拟环境:
Anaconda 创建环境:
比如,创建 pyhon=3.7 的版本环境取名叫 inr2vec
1 | conda create -n inr2vec python=3.7 |
# 删除虚拟环境操作:(谨慎操作)
1 | conda remove -n inr2vec --all |
# 激活环境
1 | conda activate inr2vec |
如果发现进不去,那么
先: source activate inr2vec
再: conda activate inr2vec
1 | # 查看python版本 |
# 查看环境下已有的安装包:
1 | conda list |
效果如下
在进入虚拟环境的情况下, 安装对应包
直接
1 | pip install xxxx 或者 conda install xxxx |
如:
1 | pip install tensorflow |
注意
:此环境下的安装包在 退出虚拟环境后无法使用
的
# 退出当前虚拟环境:
1 | conda deactivate |
补充:Linux 下查看已有虚拟环境:
1 | conda-env list |
提醒:有时候遇到过几次异常,所以开启完虚拟环境后最好使用命令
1 | which python |
判断编译器位置最为稳妥(inr2vec 是虚拟环境名),有一个 home/anaconda/envs/nlp/bin/python
如果发现没有在 anaconda/envs
的虚拟环境 (inr2vec) 下,则多次使用
1 | conda deactivate |
先退出当前环境,然后再重新使用 source activate xxxx
进入环境
# 重命名环境
conda 其实没有重命名指令,实现重命名是通过 clone 完成的,分两步:
①先 clone 一份 new name 的环境
②删除 old name 的环境
如,将 inr2vec
重命名成 tf2
1 | conda create -n tf2 --clone inr2vec |
删除原环境
1 | conda remove -n inr2vec --all |
————————————
# 根据 readme 继续操作
# 跟着操作细节
Create a virtual environment and install the library pycarus
:
1 | python3 -m venv .venv |
前两个没问题 第三个开始发现太慢了
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
于是决定来个镜像
# 为本地 conda 环境配置国内镜像源
1 | conda config --add channels https://mirrors.aliyun.com/pypi/simple/ |
# 为服务器的 conda 环境配置国内镜像源
添加清华镜像源
1 | conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/ |
【注】使用 http 不是 https,在后面加上 win-64
# 常用操作
显示添加的源通道
1 | conda config --show-sources |
移除某一镜像源
1 | conda config --remove channels 源名称或链接 |
验证安装
为了确保正确安装了 PyTorch,我们可以通过运行示例 PyTorch 代码来验证安装。在这里,我们将构造一个随机初始张量
在 anaconda prompt (miniconda3) 命令行或者 shell 中,输入:
1 | python |
然后输入以下代码:
1 | import torch |
输出应类似于以下内容:
1 | tensor([[0.3380, 0.3845, 0.3217], |
此外,如果要检查 PyTorch 是否启用了 GPU 和 CUDA,请运行以下命令以返回是否启用了 CUDA 驱动程序:
1 | import torch |
如果返回了 True, 恭喜您,成功安装了 GPU 版本。
——————————————————————————————
Then, try to import pycarus
to get the command that you can run to install all the needed Pytorch libraries:
常用的检查有没有 $ pip install -U pip setuptools 装好包的步骤:
1 | $ python3 |
exit()退出 python 环境
不记得有没有安装好
$ pip install -U pip setuptools
$ pip install pycarus
重新执行啦
1 | pip install -U pip setuptools |
————————————————————————
出现这种情况
成功安装
waring 是因为
在 Linux 中,
root
是具有最高权限的用户账户,可以访问和修改系统的任何部分。以root
用户身份运行pip
可能会导致权限问题,尤其是当系统的包管理器试图管理相同的 Python 包时。这可能会导致系统中的包版本冲突或损坏。
解决方法(无虚拟环境条件)
1 | python3 -m venv myenv # 创建一个名为myenv的虚拟环境 |
——————————————————
# 尾声:磁盘空间不足
安装包后
ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device
磁盘空间不足的错误( No space left on device
)
删除不必要的文件或数据:首先,检查您的磁盘空间使用情况,查找并删除不再需要的大文件或目录。可以使用如 du
和 df
命令来帮助您找出使用最多磁盘空间的目录。
1 | df -h # 查看每个挂载点的磁盘使用情况 |
如果发现特定目录特别大,可以深入查看该目录下的内容:
1 | du -sh /path/to/directory/* # 替换路径以检查特定目录 |
当找到不需要的大文件或目录时,使用 rm
命令删除它们:
1 | rm -rf /path/to/directory/large_file # 替换路径和文件名以删除大文件 |
清理缓存:某些系统和应用程序会创建缓存文件,这些文件可以删除以释放空间。例如,您可以清理包管理器的缓存:
如果您的系统基于 RPM(如 Alibaba Cloud Linux),您可以使用以下命令清理缓存:
1
sudo yum clean all # 或者 sudo dnf clean all
这将删除缓存的软件包和软件仓库元数据。
删除旧的或无用的虚拟环境:如果您创建了虚拟环境并且不再需要它们,可以直接删除包含虚拟环境的目录。假设您的虚拟环境名为
myenv
,可以使用以下命令:1
rm -rf myenv
请确保只删除不再需要的环境,因为这个操作是不可逆的。
卸载不需要的软件包:如果安装了不再需要的软件包,可以将它们卸载以释放空间。
查找并卸载不再需要的软件包:
1
sudo yum remove package_name # 替换package_name为您想要卸载的包名
检查并清理日志文件:系统日志文件有时会变得很大。检查
/var/log
目录并删除旧的或不必要的日志文件。对于日志文件的清理,建议谨慎行事,因为某些日志文件对于系统运维和故障排查很重要。1
2sudo du -sh /var/log/* # 查看日志文件的大小
sudo rm /var/log/old_log_file # 删除旧的或大的日志文件,替换old_log_file为实际文件名注意:在删除任何日志文件之前,请确保这些文件不是正在使用的或对系统运行至关重要的。
检查用户文件:检查您的家目录下的文件,并移除不再需要的内容:
1 | cd ~ # 切换到家目录 |
警告: rm -rf
命令非常强大,它会在没有任何提示的情况下删除文件和目录。在使用之前,请确保您正在删除正确的文件或目录。如果不确定,最好备份或者单独删除文件而非整个目录。
但要请格外小心,不要删除不了解的系统文件,这可能会导致系统不稳定或不可用。如果您不确定某个文件或目录的用途,请在删除前进行查询或备份。
# 最后查看服务器情况
1 | free -m |
Mem 行(单位均为 M):
* total:内存总数
* used:已使用内存数
* free:空闲内存数
* shared:当前废弃不用
* buffers:缓存内存数(Buffer)
* cached:缓存内舒数(Page)(-/+ buffers/cache) 行:
- (-buffers/cache): 真正使用的内存数,指的是第一部分的 used - buffers - cached
- (+buffers/cache): 可用的内存数,指的是第一部分的 free + buffers + cached
Swap 行指交换分区。
实际上不要看 free 少就觉得内存不足了,buffers 和 cached 都是可以在使用内存时拿来用的,应该以 (-/+ buffers/cache) 行的 free 和 used 来看。只要没发现 swap 的使用,就不用太担心,如果 swap 用了很多,那就要考虑增加物理内存了。
# 查看 CPU 使用情况
使用命令:
1 | top |
大致结果类似下图
上方文字部分的红框为总的 CPU 占用百分率,下方的表格是每个进程的 CPU 占用率,在表格第一行可以看到红框中占用率超过了 150%,这是因为服务器是多核 CPU,而该进程使用了多核。
# 查看显卡使用情况
使用命令:
1 | nvidia-smi |
大致结果类似下图:
表格中会显示显卡的一些信息,第一行是版本信息,第二行是标题栏,第三行就是具体的显卡信息了,如果有多个显卡,会有多行,每一行的信息值对应标题栏对应位置的信息。
1 | * GPU:编号 |
需要注意的一点是显存占用率和 GPU 占用率是两个不一样的东西,类似于内存和 CPU,两个指标的占用率不一定是互相对应的。
在下面就是每个进程使用的 GPU 情况了。
———————————————
由于项目复盘起来直接撑爆内存条,所以下一篇学习一些 clip 和 ulip
参考文档
https://blog.csdn.net/wyf2017/article/details/118676765
https://www.cnblogs.com/brithToSpring/p/13494966.html
https://zhuanlan.zhihu.com/p/434356947
https://blog.csdn.net/Cloudox_/article/details/78651637