深度学习-服务器环境

深度学习-服务器环境

配服务器环境用得到和用不到的,反正全都在这了。

服务器

Linux相关

硬盘

查看硬盘占用:

1
2
3
4
5
6
7
# 查看已挂载分区空间
df -h

# 查看所有硬盘(包括未挂载)
lsblk

sudo fdisk -l

查看子目录大小:

1
2
3
du -sh /*
du -lh --max-depth=1 | sort -hr
ls -hl

用户管理

添加新用户并设置为管理员:

1
2
3
4
5
# 添加新用户
sudo adduser 用户名

# 添加到sudo组
sudo usermod -aG sudo 用户名

远程连接

传输

  • rsync传输:支持断点续传、压缩传输,能够校验文件进行续传
1
rsync -avzPc /local_dir/ user@remote_host:/remote_dir/

其中

  • -a 选项确保 rsync 以递归方式运行并保持文件属性

  • -v 选项显示详细的传输过程

  • -z 选项压缩数据以节省带宽

  • -P 选项显示传输进度并允许断点续传

  • -c 选项告诉 rsync 使用校验和来比较文件内容。即使文件的大小和时间戳相同,rsync 也会检查文件内容,仅在内容不同时才会重新传输

  • scp远程复制:简单传输,不如rsync好用

1
2
% 从存有文件的服务器发起
scp -r 文件位置 用户名@另一台服务器ip:目标位置

公钥连接ssh

获取Mac本地公钥:

1
2
3
4
5
# 查看
cat ~/.ssh/id_rsa.pub

# 如果没有密钥对则需生成
ssh-keygen -t rsa

复制到Ubuntu中:

1
2
# 打开并添加公钥
vim ~/.ssh/authorized_keys

VSCode中.ssh配置文件改为:

1
2
3
4
Host 主机名
HostName IP地址
User 用户名
IdentityFile /Users/本地用户名/.ssh/id_rsa

远程桌面

在自带的gnome桌面上利用xrdp实现Windows&Mac的远程桌面(以Ubuntu为例)。安装:

1
2
sudo apt install xrdp
sudo systemctl status xrdp

随后用Remote Desktop连接即可。如果连接后出现黑屏,需将桌面从wayland切换为xorg

1
2
3
4
5
6
sudo vim /etc/gdm3/custom.conf

% 取消这行的注释
WaylandEnable=false

sudo systemctl restart gdm3

Tmux

基本命令:

1
2
3
4
5
6
7
8
9
10
11
# 创建会话(session)
tmux new -t 名字

# 连接到会话
tmux a -t 名字

# 列出所有会话
tmux ls

# 关闭窗口
tmux kill-window -t 名字

配置鼠标滚轮滚动:在~/.tmux.conf中加入:

1
set -g mouse on

虚拟环境

Anaconda & pip

清除缓存:

1
2
3
4
conda clean --packages
conda clean --all

pip cache purge

删除环境:

1
2
conda info --envs
conda env remove -n <environment_name>

pip镜像源加速:

1
2
3
4
5
% 临时使用源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <包名>

% 永久修改配置
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

显卡相关

算力/压力测试

使用gpu_burn工具实现:

1
2
3
4
git clone https://github.com/wilicc/gpu-burn
cd gpu-burn
make
./gpu_burn 100

编译得到可执行程序,用法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
GPU Burn
Usage: gpu_burn [OPTIONS] [TIME]

-m X Use X MB of memory
-m N% Use N% of the available GPU memory
-d Use doubles
-tc Try to use Tensor cores (if available)
-l List all GPUs in the system
-i N Execute only on GPU N
-h Show this help message

Example:
gpu_burn -d 3600

CUDA管理

  • 管理多个CUDA版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看所有CUDA版本
ls /usr/local/

# 配置环境变量
vim ~/.bashrc
# 末尾添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-1x.x/lib64
export PATH=$PATH:/usr/local/cuda-1x.x/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-1x.x
# 如果找不到nvcc报错可以加上这个
export nvcc_path="/usr/local/cuda/bin/nvcc"

# 更新配置文件
source ~/.bashrc

# 查看当前版本
nvcc -V
  • 另一种软链接的方式,每次更换版本无需修改~/.bashrc
1
2
3
4
5
6
7
8
9
# 向~/.bashrc中添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

# 每次要改为特定版本
nvcc -V
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-1x.x /usr/local/cuda

驱动

nvidia-smi一直刷新:

1
watch -n 0.1 -d nvidia-smi

Ubuntu下新安装的显卡驱动默认关闭持久性模式,每次调用nvidia-smi需要数秒等待驱动启动,并且有风险掉驱动。开启驱动持久性模式,使显卡驱动常驻:

1
sudo nvidia-smi -pm 1

Ollama

更改模型下载位置

1
sudo systemctl edit ollama.service

添加目录设置:

1
2
[Service]
Environment="OLLAMA_MODELS=/new_path/"

重新运行服务:

1
2
3
4
sudo systemctl stop ollama
sudo mv -f /usr/share/ollama/.ollama/models/ /<new_path>/ollama/
sudo systemctl daemon-reload
sudo systemctl restart ollama

如果ollama还是反复崩溃和重启,需把新目录的所有者改为ollama,并赋予读写权限:

1
2
sudo chown -R ollama /new_path/
sudo chmod -R 777 /new_path/

下载

Hugging Face 模型下载

下载huggingface-cli

官方文档:Command Line Interface (CLI)

安装:

1
pip install -U huggingface_hub

用法帮助:

1
huggingface-cli --help

国内加速

镜像站地址:hf-mirror.com

用法:

1
2
3
export HF_ENDPOINT=https://hf-mirror.com

huggingface-cli download --resume-download --local-dir-use-symlinks False 仓库名 --local-dir 本地路径

如果产生如下报错无法download

1
huggingface-cli: error: argument {env,login,whoami,logout,repo,lfs-enable-largefiles,lfs-multipart-upload,scan-cache,delete-cache}: invalid choice: 'download' (choose from 'env', 'login', 'whoami', 'logout', 'repo', 'lfs-enable-largefiles', 'lfs-multipart-upload', 'scan-cache', 'delete-cache')

说明python版本太低,需在Python>=3.8进行安装。

Github下载加速

镜像站

利用现有镜像站kkgithub.comgithubfast.com代替任何链接中的github.com

也可用Cloudflare自建镜像站:

  1. 进入Cloudflare控制台,创建Workers
  2. 编辑代码,粘贴如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const TELEGRAPH_URL = 'https://github.com';

addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
const url = new URL(request.url);
url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');

const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});

const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);

// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

return modifiedResponse;
}
  1. 绑定cloudflare托管的域名github.xxx.com

理论上可用于任何网站代理,除非有IP检测(如Google、OpenAI)。

数据库目录下载

目录结构的数据库常见于数据集下载,例如:DVU (nist.gov);可用wget递归下载所有内容:

1
wget -r -np -nH -R *.html,*.tmp 网址 -c

对于需要登录鉴权的数据库,如dvu.challenge

1
wget -r -np -nH -R *.html,*.tmp --user=用户名 --password=密码 网址 -c

其中-r表示递归下载,-R排除不需要的文件,-c可进行断点续传。

深度学习-服务器环境

https://byter.ink/Tech/2024/dl-env/

Author

Byter

Posted on

2024-08-11

Updated on

2024-08-11

Licensed under