在Linux服务器上部署阿里的qwq-32B模型

在Linux服务器上部署阿里的qwq-32B模型

一、查看系统配置

在服务器中,需要查看cpu,gpu和磁盘信息以选择合适的模型进行本地部署

查看cpu信息

lscpu命令,查看的是cpu的统计信息,用cat /proc/cpuinfo命令,可以查看每个cpu信息,如每个CPU的型号,主频等,用free -m命令,可以查看内存的使用情况,使用cat /proc/meminfo 命令可以查看内存的详细使用,使用命令top可以实时查看每个cpu的使用情况

(llm) (base) llm@test-NF5468-A7-A0-R0-00:~$ lscpu
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          52 bits physical, 57 bits virtual
  Byte Order:             Little Endian
CPU(s):                   384
  On-line CPU(s) list:    0-383
Vendor ID:                AuthenticAMD
  Model name:             AMD EPYC 9654 96-Core Processor
    CPU family:           25
    Model:                17
    Thread(s) per core:   2
    Core(s) per socket:   96
    Socket(s):            2
    Stepping:             1
    Frequency boost:      enabled
    CPU max MHz:          3707.8120
    CPU min MHz:          1500.0000
    BogoMIPS:             4800.21

查看磁盘信息

采用lsblk可以查看硬盘和分区分布,采用fdisk -l可以查看硬盘和分区的详细信息

(llm) (base) llm@test-NF5468-A7-A0-R0-00:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0     4K  1 loop /snap/bare/5
loop1         7:1    0  74.2M  1 loop /snap/core22/1122
loop2         7:2    0  73.9M  1 loop /snap/core22/1748
loop3         7:3    0   497M  1 loop /snap/gnome-42-2204/141
loop4         7:4    0 266.6M  1 loop /snap/firefox/3836
loop5         7:5    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop6         7:6    0  12.3M  1 loop /snap/snap-store/959
loop7         7:7    0  40.4M  1 loop /snap/snapd/20671
loop8         7:8    0  44.4M  1 loop /snap/snapd/23545
loop9         7:9    0   568K  1 loop /snap/snapd-desktop-integration/253
loop10        7:10   0   452K  1 loop /snap/snapd-desktop-integration/83
sda           8:0    0   1.7T  0 disk 
├─sda1        8:1    0   512M  0 part /boot/efi
└─sda2        8:2    0   1.7T  0 part /var/snap/firefox/common/host-hunspell
                                      /
sdb           8:16   0  43.7T  0 disk 
└─sdb1        8:17   0  43.7T  0 part /data1
nvme0n1     259:0    0     7T  0 disk 
└─nvme0n1p1 259:1    0     7T  0 part /data2

查看gpu信息

使用命令nvidia-smi查看显卡的信息和使用情况,如果需要对显卡实时监控,使用watch -n 5 nvidia-smi命令,每隔5s刷新一次使用情况

(llm) (base) llm@test-NF5468-A7-A0-R0-00:~$ nvidia-smi
Fri Apr 25 11:36:37 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15              Driver Version: 570.86.15      CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4090        Off |   00000000:01:00.0 Off |                  Off |
| 32%   29C    P8             25W /  450W |      73MiB /  49140MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA GeForce RTX 4090        Off |   00000000:41:00.0 Off |                  Off |
| 32%   30C    P8             26W /  450W |      15MiB /  49140MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   2  NVIDIA GeForce RTX 4090        Off |   00000000:81:00.0 Off |                  Off |
| 32%   30C    P8             20W /  450W |      15MiB /  49140MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   3  NVIDIA GeForce RTX 4090        Off |   00000000:C1:00.0 Off |                  Off |
| 31%   31C    P8             30W /  450W |      15MiB /  49140MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            6158      G   /usr/lib/xorg/Xorg                        4MiB |
|    0   N/A  N/A          253042      G   /usr/lib/xorg/Xorg                       48MiB |
|    1   N/A  N/A            6158      G   /usr/lib/xorg/Xorg                        4MiB |
|    2   N/A  N/A            6158      G   /usr/lib/xorg/Xorg                        4MiB |
|    3   N/A  N/A            6158      G   /usr/lib/xorg/Xorg                        4MiB |
+-----------------------------------------------------------------------------------------+

二、模型下载

使用镜像进行下载,先配置镜像的环境变量,并安装依赖

pip3 install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com

将以下内容写入download.py文件并运行,需要下载GGUF格式的模型参数,关于qwq模型更详细的信息可以参考这个网站: QwQ-32B-GGUF下载网址,可以看到满血模型的参数文件名对应的是fp16,所以采用allow_patterns = ["*fp16*"]下载满血模型,对应的要下载相应的量化模型则可以看里面的文件列表,例如下载4bit量化则采用allow_patterns = ["*q4_k_m*"],但是采用量化版本的qwq模型性能下降严重,所以本文采用的是满血版本的模型

# Install Hugging Face dependencies before running this:
# pip install huggingface_hub hf_transfer

from huggingface_hub import snapshot_download
snapshot_download(
  repo_id = "Qwen/QwQ-32B-GGUF",
  local_dir = "QwQ-32B-GGUF", 
  allow_patterns = ["*fp16*"],
)

下载好后进入文件QwQ-32B-GGUF/fp16文件夹,运行du -sh ./*命令,查看下载下来的文件列表和所占用磁盘空间

(llm) llm@test-NF5468-A7-A0-R0-00:~/LLM-Model/QwQ-32B-GGUF$ du -sh ./*
62G     ./fp16
(llm) llm@test-NF5468-A7-A0-R0-00:~/LLM-Model/QwQ-32B-GGUF$ cd fp16/
(llm) llm@test-NF5468-A7-A0-R0-00:~/LLM-Model/QwQ-32B-GGUF/fp16$ du -sh ./*
3.7G    ./qwq-32b-fp16-00001-of-00017.gguf
3.7G    ./qwq-32b-fp16-00002-of-00017.gguf
3.7G    ./qwq-32b-fp16-00003-of-00017.gguf
3.7G    ./qwq-32b-fp16-00004-of-00017.gguf
3.7G    ./qwq-32b-fp16-00005-of-00017.gguf
3.7G    ./qwq-32b-fp16-00006-of-00017.gguf
3.7G    ./qwq-32b-fp16-00007-of-00017.gguf
3.7G    ./qwq-32b-fp16-00008-of-00017.gguf
3.7G    ./qwq-32b-fp16-00009-of-00017.gguf
3.7G    ./qwq-32b-fp16-00010-of-00017.gguf
3.7G    ./qwq-32b-fp16-00011-of-00017.gguf
3.7G    ./qwq-32b-fp16-00012-of-00017.gguf
3.7G    ./qwq-32b-fp16-00013-of-00017.gguf
3.7G    ./qwq-32b-fp16-00014-of-00017.gguf
3.7G    ./qwq-32b-fp16-00015-of-00017.gguf
3.7G    ./qwq-32b-fp16-00016-of-00017.gguf
2.9G    ./qwq-32b-fp16-00017-of-00017.gguf

三、模型部署运行

模型的部署运行参考的网址为deepseek-r1部署教程,这里我们部署的是qwq模型,所以会有些许不同

Screen命令

在部署运行模型之前,先了解下Screen命令,它的功能大体有3个

  • 会话恢复:只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。
  • 多窗口:在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。
  • 会话共享:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
apt install screen # 安装screen
screen -ls # 查看已经创建的窗口
screen -S Hello # 创建一个叫Hello的虚拟终端
# 使用-S创建和直接输入screen创建的虚拟终端,不会检录之前创建的screen(也就是会创建同名的screen)
screen -R Hello 
# 使用-R创建,如果之前有创建唯一一个同名的screen,则直接进入之前创建的screen
screen -r [pid/name] # 回到主终端
exit # 退出终端
screen -R [pid/Name] -X quit

# 按Ctrl+a,再按d,即可保持这个screen到后台并回到主终端

运行Llama.cpp

Llama.cpp程序部署大模型,首先先安装Llama.cpp,可以下载已经装在好的程序Download the prebuilt binaries,也可以下载源码自己编译,这里采用第二种方案,编译运行方案如下:

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# 编译CPU版本
# cmake -B build
# cmake --build build --config Release -j 8

# 编译GPU版本,编译英伟达GPU版本需要先装好驱动和CUDA
cmake -B build -DGGML_CUDA=ON -DGGML_CUDA_ENABLE_UNIFIED_MEMORY=1
cmake --build build --config Release -j 8

# 编译完成后,可执行文件和库文件被存放在build/bin目录下

进入编译好的llama.cpp/build/bin文件下,用screen命令打开并运行llama服务器,之后就可以在http://127.0.0.1:10000上访问模型并进行对话

(llm) llm@test-NF5468-A7-A0-R0-00:~/llama.cpp/build/bin$ pwd
/home/llm/llama.cpp/build/bin
(llm) llm@test-NF5468-A7-A0-R0-00:~/llama.cpp/build/bin$ screen -R llama-server
[screen is terminating]
./llama-server \
    --model /home/llm/LLM-Model/QwQ-32B-GGUF/fp16/qwq-32b-fp16-00001-of-00017.gguf \
    --port 12631 \
    --ctx-size 0 \
    --n-gpu-layers 999 \
    --parallel 10
Llama参数详解

这是Llama-server命令的详细文档:(Llama-server文档)[https://github.com/ggml-org/llama.cpp/blob/master/examples/server/README.md]
主要的参数有以下几个:

  • -c, --ctx-size N: 提示上下文的大小(默认值:4096,0 = 从模型加载)
  • -np, --parallel N: 并发数(默认值: 1)
  • -m, --model FNAME: 模型路径
  • –host HOST: 要侦听的 IP 地址(默认值:127.0.0.1)
  • –port PORT: 要侦听的端口(默认值:8080)(
  • –no-webui: 禁用Web UI (默认: enabled)
  • -ngl, --gpu-layers, --n-gpu-layers N: 要加载到GPU内存中的层数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值