gpu上建立容器
nvidia-docker run -it \ (这边也可以使用docker run -it)
docker run -it -u root \
--gpus all \
-p 1034:1034 -p 2735:2735 \
-e NVIDIA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
--ulimit memlock=-1 \
--name whk_vllm_091_0728 \
-v /data/:/data/ \
-v /home/model/:/home/model/ \
ee0767a44255 bash
#挂载命令
mkdir -p /nfs-data ; mount -t nfs -o vers=3,timeo=600,nolock 10.170.23.193:/ /nfs-data
初始化设置
vim ~/.bashrc
export HISTSIZE=1000
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export https_proxy=http://10.155.192.138:8080
修改pip源
vim ~/.pip/pip.conf
[global]
index-url = http://7.223.199.227/pypi/simple
trusted-host = 7.223.199.227
timeout = 120
#pip install torch==2.5.1 --default-timeout=1000 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
多机启动
ray:# 指定通信网卡,使用ifconfig查看,找到和主机IP一致的网卡名
export GLOO_SOCKET_IFNAME=enp67s0f5
export TP_SOCKET_IFNAME=enp67s0f5
export RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export MM_ALL_REDUCE_OP_THRESHOLD=1000000
export HCCL_OP_EXPANSION_MODE="AIV"
export NUMEXPR_MAX_THREADS=192
# 将其中一个节点设为头节点
ray start --head --num-gpus=8
# 在其他节点执行
ray start --address='7.216.55.58:6379' --num-gpus=8
远程链接容器
#配置ssh
#第一步config文件
vi /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
#第二步建立/run/sshd
mkdir /run/sshd
#第三步确认没有sshd时候设置passwd
passwd #这个时候别有sshd
#第四步开启sshd
/usr/sbin/sshd
ssh 7.242.105.173 -p 8035 #来确认是否链接成功
#解决上面报错,生成对应ssh
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -P '' -q
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -P '' -q
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -P '' -q
#不需要ssh命令
git config --global http.sslVerify false
#支持自动迁移代码
from torch_npu.contrib import transfer_to_npu
打patch包
cp -r vllm patch/vllm
cd patch
git init
git add .
git commit -m "init"
修改代码
git add .
git commit -m "xxxx"
git format-patch -1
修改patch名称
查看cann包
#查看cann包版本
cat /usr/local/Ascend/ascend-toolkit/latest/version.cfg
#去除所有进程
ps -ef | grep python| grep -v grep | awk '{print $2}' | xargs kill -9
#pytorch中查看日志的两行命令
export ASCEND_GLOBAL_LOG_LEVEL=1
export ASCEND_SLOG_PRINT_TO_STDOUT=1
可视化数据
# 使用 pip3 (推荐)
pip3 install visidata
# Ubuntu/Debian
sudo apt-get install visidata
# macOS (使用Homebrew)
brew install visidata
vd + csv文件
Linux命令
# 查看可执行文件的依赖库
ldd /usr/bin/python3
ldd /bin/ls
# 查看动态库的依赖
ldd /usr/lib/x86_64-linux-gnu/libc.so.6
# 批量查看目录下所有程序的依赖
find /usr/bin -type f -executable -exec ldd {} \; 2>/dev/null
# 按名称查找库文件
find /usr -name "libc.so.6" -type f 2>/dev/null
find / -name "*.so" -type f 2>/dev/null
# 在标准库目录中查找
find /usr/lib /usr/lib64 -name "libpthread*" -type f
#objdump - 目标文件分析
# 查看动态库依赖
objdump -p /usr/bin/python3 | grep NEEDED
# 查看共享库的符号表
objdump -T /lib/x86_64-linux-gnu/libc.so.6
# 查看动态段信息
objdump -x /path/to/binary | grep -E "(NEEDED|SONAME)"
# 查看动态库依赖
readelf -d /usr/bin/bash | grep "Shared library"
# 查看所有动态段信息
readelf -d /path/to/program
# 查看符号表
readelf -s /usr/lib/libm.so.6 | grep sqrt
# 查看运行中程序加载的库
lsof -p <pid> | grep "\.so"
# 查看哪个进程使用了特定库
lsof /usr/lib/libc.so.6
| 场景 |
命令示例 |
|
| GPU 状态 |
nvidia-smi / nvidia-smi dmon -s pucvmet |
|
| 显存占用 |
gpustat -cpP1 或 nvtop |
|
| 看模型大小 |
du -h /data/models/Qwen2-7B* |
|
| 压测接口 |
wrk -t4 -c100 -d30s -s post.lua http://ip:8000/generate |
|
| 实时日志 |
tail -f /var/log/messages |
grep llm_srv |
| 端口冲突 |
lsof -i:8000 |
|
| 批量杀进程 |
pkill -f uvicorn |
|
| 防火墙 |
ufw allow 8000/tcp |
|
| 永久挂载 |
echo "/dev/sdb1 /data ext4 defaults 0 0" >> /etc/fstab |
|