当前位置: 首页 > news >正文

【瞎折腾/mi50 32G/ubuntu】mi50显卡ubuntu运行大模型开坑(二)使用llama.cpp部署Qwen3系列

目录

  • 说在前面
  • 准备工作
  • 编译llama.cpp
  • 运行Qwen3系列
    • 4B Q4
    • 32B Q6
    • 温度
  • 参考

说在前面

  • 主板:未知x99
  • cpu:E5 2666v3
  • 显卡:Mi 50 32G
  • 系统:ubuntu 22.04

准备工作

  • 挂载磁盘(可选)
    由于我的系统装在U盘上,访问文件系统会比较慢,这里挂载一下其他磁盘,使用lsblk查看当前可用磁盘
    lele@lele-X99M-Gaming:/mnt/e$ lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    sda           8:0    0 465.8G  0 disk
    ├─sda1        8:1    0   233G  0 part
    ├─sda2        8:2    0     1K  0 part
    └─sda5        8:5    0 232.8G  0 part
    sdb           8:16   0 238.5G  0 disk
    ├─sdb1        8:17   0   499M  0 part
    ├─sdb2        8:18   0    99M  0 part
    ├─sdb3        8:19   0    16M  0 part
    ├─sdb4        8:20   0  99.4G  0 part
    └─sdb5        8:21   0 138.5G  0 part
    sdc           8:32   0 119.2G  0 disk
    ├─sdc1        8:33   0   976M  0 part /boot
    ├─sdc2        8:34   0     1K  0 part
    ├─sdc3        8:35   0  19.1G  0 part /home
    ├─sdc4        8:36   0    84G  0 part /
    └─sdc5        8:37   0  15.3G  0 part [SWAP]
    nvme0n1     259:0    0 119.2G  0 disk
    ├─nvme0n1p1 259:1    0   300M  0 part /boot/efi
    ├─nvme0n1p2 259:2    0    16M  0 part
    └─nvme0n1p3 259:3    0 118.9G  0 part
    
    /mnt目录下创建文件夹,将对应磁盘挂载上去,例如将nvme0n1p3挂载到/mnt/e
    cd /mnt
    sudo mkdir e
    sudo mount /dev/nvme0n1p3 e/
    
  • 准备Qwen3模型
    到国内魔塔社区下载即可
    在这里插入图片描述
    这里选择Unsloth的32B Q6量化模型
    在这里插入图片描述

编译llama.cpp

  • 安装必要依赖
    sudo apt install build-essential
    sudo apt install cmake git libcurl4-openssl-dev libstdc++-12-dev
    
  • 下载源代码
    官网
    在这里插入图片描述
    在release界面选择最新版本的源码
  • 解压
    tar -xvf llama.cpp-master.tar.gz
    cd llama.cpp-master
    
  • 使用cmake
    HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" \cmake -S . -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx906 -DCMAKE_BUILD_TYPE=Release
    
    官网的编译实例使用的是gfx1030,我们到这个网站看mi50对应的是什么
    在这里插入图片描述
  • cmake成功之后直接编译即可
    cmake --build build --config Release -- -j 16
    

运行Qwen3系列

4B Q4

  • 目录结构如下
    lele@lele-X99M-Gaming:~$ tree -L 1
    .
    ├── amdgpu-install_6.0.60001-1_all.deb
    ├── llama.cpp-master
    └── Qwen3-4B-UD-Q4_K_XL.gguf
    
  • 执行命令
    ./llama.cpp-master/build/bin/llama-cli -m Qwen3-4B-UD-Q4_K_XL.gguf -ngl 99
    
  • 测试
    > 你好
    <think>
    嗯,用户发来了一条简单的“你好”,看起来是打招呼。我需要先回应一下,保持友好和亲切。用户可能只是想测试一下我的反应,或者真的需要帮助。我应该先确认他们是否需要帮助,或者只是闲聊。接下来,我需要考虑用户可能的意图。他们可能是在开始一段对话,或者有具体的问题需要解决。比如,他们可能想询问某个问题,或者只是想聊天。作为AI助手,我应该保持开放和欢迎的态度,同时准备好提供帮助。然后,我需要确保我的回应既友好又专业。避免使用过于机械的语言,而是用自然的口语化中文。比如,用“您好!”来回应,然后询问他们需要什么帮助,这样既礼貌又主动。另外,用户可能没有明确说明他们的需求,所以需要进一步引导他们说出具体的问题。比如,可以提到我可以帮助解答问题、提供信息,或者进行闲聊。这样用户可以选择他们需要的类型。还要注意用户的潜在需求。可能他们遇到了某个问题,或者想分享一些信息。我需要保持耐心,鼓励他们详细说明,以便提供更有针对性的帮助。最后,确保回应简洁明了,不带任何不必要的复杂性。让用户觉得轻松,愿意继续对话。
    </think>您好!我是您的AI助手,随时为您解答问题、提供帮助或进行闲聊。您有什么需要我协助的吗? 😊
    

32B Q6

  • 执行命令

    ./llama.cpp-master/build/bin/llama-cli -m Qwen3-32B-UD-Q6_K_XL.gguf -ngl 99
    
  • 测试

    mi50 32G Qwen3


    B站

温度

  • 实际使用的时候,4B的温度其实不高,32B Q6的温度有80多度(室温较低,夏天用的那种大风扇对着吹的情况下),所以散热一定要做好
    rocm-smi
    ======================================== ROCm System Management Interface ========================================
    ================================================== Concise Info ==================================================
    Device  [Model : Revision]    Temp    Power     Partitions      SCLK    MCLK    Fan    Perf  PwrCap  VRAM%  GPU%Name (20 chars)       (Edge)  (Socket)  (Mem, Compute)
    ==================================================================================================================
    0       [0x0834 : 0x01]       90.0°C  87.0W     N/A, N/A        930Mhz  800Mhz  30.2%  auto  225.0W   63%   100%Radeon Instinct MI50
    ==================================================================================================================
    ============================================== End of ROCm SMI Log ===============================================
    

参考

  • gfx1030

相关文章:

  • 【深度学习-Day 6】掌握 NumPy:ndarray 创建、索引、运算与性能优化指南
  • 手机打电话时由对方DTMF响应切换多级IVR语音应答(一)
  • 三、【LLaMA-Factory实战】模型微调进阶:从LoRA到MoE的技术突破与工程实践
  • 微服务中怎么获取请求头信息
  • WSL 安装 Debian 后,apt get 如何更改到国内镜像网址?
  • Python从入门到高手8.2节-元组的常用操作符
  • R004 -计算机硬件基础
  • Matlab实现基于CNN-GRU的锂电池SOH估计
  • Vite简单介绍
  • 五一作业-day03
  • Baklib知识中台:智能服务架构新实践
  • Java求职面试:Spring Boot与微服务的幽默探讨
  • 【Hive入门】Hive安全管理与权限控制:用户认证与权限管理深度解析
  • 代码随想录算法训练营第三十二天
  • MATLAB人工大猩猩部队GTO优化CNN-LSTM多变量时间序列预测
  • 文本三剑客试题
  • Android设备运行yolov8
  • 系统架构-层次式架构设计
  • MATLAB仿真定点数转浮点数(对比VIVADO定点转浮点)
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)
  • 甘怀真:天下是神域,不是全世界
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 深圳一购房者交首付后迟迟无法签合同,澎湃介入后开发商承诺退款
  • 浙江医生举报3岁男童疑遭生父虐待,妇联:已跟爷爷奶奶回家
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 辛涛任山东第一医科大学副校长,曾为“博士服务团”成员