【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持

这篇具有很好参考价值的文章主要介绍了【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接上篇

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2-CSDN博客

前面的实验,chat.sh确认是运行在CPU模式下,未启用GPU支持

重新编译llama.cpp

sudo apt install nvidia-cuda-toolkit
cd ~/Downloads/ai/llama.cpp
make clean
make LLAMA_CUBLAS=1 -j6

故障:nvcc fatal   : Value 'native' is not defined for option 'gpu-architecture'

查看gpu-arch

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持,ubuntu,llama,linux

修改Makefile,调整MK_NVCCFLAGS差异如下 

yeqiang@yeqiang-MS-7B23:~/Downloads/ai/llama.cpp$ diff -Npr Makefile Makefile.bak 

*** Makefile	2024-01-18 09:27:20.833657229 +0800
--- Makefile.bak	2024-01-18 09:26:19.792301482 +0800
*************** endif #LLAMA_CUDA_NVCC
*** 380,386 ****
  ifdef CUDA_DOCKER_ARCH
  	MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
  else ifndef CUDA_POWER_ARCH
! 	MK_NVCCFLAGS += -arch=compute_87
  endif # CUDA_DOCKER_ARCH
  ifdef LLAMA_CUDA_FORCE_DMMV
  	MK_NVCCFLAGS += -DGGML_CUDA_FORCE_DMMV
--- 380,386 ----
  ifdef CUDA_DOCKER_ARCH
  	MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
  else ifndef CUDA_POWER_ARCH
! 	MK_NVCCFLAGS += -arch=native
  endif # CUDA_DOCKER_ARCH
  ifdef LLAMA_CUDA_FORCE_DMMV
  	MK_NVCCFLAGS += -DGGML_CUDA_FORCE_DMMV

重新编译

make clean
make LLAMA_CUBLAS=1 -j6

启动

cd ~/Downloads/ai/Chinese-LLaMA-Alpaca-2/
ln -s -f ~/Downloads/ai/llama.cpp/main .
bash scripts/llama-cpp/chat.sh models/chinese-alpaca-2-1.3b/ggml-model-q4_0.bin

报错

 [/INST]CUDA error: no kernel image is available for execution on the device
  current device: 0, in function ggml_cuda_op_mul_mat at ggml-cuda.cu:9089
  cudaGetLastError()
GGML_ASSERT: ggml-cuda.cu:231: !"CUDA error"
Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: 不允许的操作.
No stack.
 

root再次执行,报错

CUDA error: no kernel image is available for execution on the device
  current device: 0, in function ggml_cuda_op_mul_mat at ggml-cuda.cu:9089
  cudaGetLastError()
GGML_ASSERT: ggml-cuda.cu:231: !"CUDA error"
[New LWP 10733]
[New LWP 10734]
[New LWP 10735]
[New LWP 10743]
[New LWP 10744]
[New LWP 10745]
[New LWP 10746]
[New LWP 10747]
[New LWP 10748]
[New LWP 10749]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f873baea42f in __GI___wait4 (pid=10750, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
30    ../sysdeps/unix/sysv/linux/wait4.c: 没有那个文件或目录.
#0  0x00007f873baea42f in __GI___wait4 (pid=10750, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
30    in ../sysdeps/unix/sysv/linux/wait4.c
#1  0x000055f91c7cd15b in ggml_print_backtrace ()
#2  0x000055f91c8a0b9d in ggml_cuda_error(char const*, char const*, char const*, int, char const*) [clone .constprop.0] ()
#3  0x000055f91c8c2e5c in ggml_cuda_op_mul_mat(ggml_tensor const*, ggml_tensor const*, ggml_tensor*, void (*)(ggml_tensor const*, ggml_tensor const*, ggml_tensor*, char const*, float const*, char const*, float*, long, long, long, long, CUstream_st*), bool) ()
#4  0x000055f91c8c3ae5 in ggml_cuda_mul_mat(ggml_tensor const*, ggml_tensor const*, ggml_tensor*) ()
#5  0x000055f91c8c4f67 in ggml_cuda_compute_forward ()
#6  0x000055f91c7faabe in ggml_graph_compute_thread ()
#7  0x000055f91c7feb45 in ggml_graph_compute ()
#8  0x000055f91c8c8c6e in ggml_backend_cpu_graph_compute ()
#9  0x000055f91c8cce07 in ggml_backend_sched_graph_compute ()
#10 0x000055f91c81d68b in llama_decode_internal(llama_context&, llama_batch) ()
#11 0x000055f91c81e0a3 in llama_decode ()
#12 0x000055f91c7bf8cf in main ()
[Inferior 1 (process 10729) detached]
 

驱动与cuda不匹配?

下载安装最新cuda(只升级cuda,驱动暂时不升级)

wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda_12.3.2_545.23.08_linux.runsudo sh cuda_12.3.2_545.23.08_linux.run

sudo sh cuda_12.3.2_545.23.08_linux.run

配置ld.so.conf

sudo echo "/usr/local/cuda/lib64" >> /etc/ld.so.conf
sudo ldconfig

编译llama.cpp

export PATH=/usr/local/cuda/bin/:$PATH
make clean
make LLAMA_CUBLAS=1 -j6

再次启动chat.sh

cd ~/Downloads/ai/Chinese-LLaMA-Alpaca-2/
ln -s -f ~/Downloads/ai/llama.cpp/main .
sudo bash scripts/llama-cpp/chat.sh models/chinese-alpaca-2-1.3b/ggml-model-q4_0.bin

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持,ubuntu,llama,linux

重启到mult-user.target

sudo systemctl set-default multi-user.target
reboot

解决:CUDA error: no kernel image is available for execution on the device

修改Makefile MK_NVCCFLAGS += -arch=compute_75 差异如下

*** Makefile	2024-01-18 14:35:08.120485566 +0800
--- Makefile.bak	2024-01-18 09:26:19.792301482 +0800
*************** endif #LLAMA_CUDA_NVCC
*** 380,386 ****
  ifdef CUDA_DOCKER_ARCH
  	MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
  else ifndef CUDA_POWER_ARCH
! 	MK_NVCCFLAGS += -arch=compute_75
  endif # CUDA_DOCKER_ARCH
  ifdef LLAMA_CUDA_FORCE_DMMV
  	MK_NVCCFLAGS += -DGGML_CUDA_FORCE_DMMV
--- 380,386 ----
  ifdef CUDA_DOCKER_ARCH
  	MK_NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
  else ifndef CUDA_POWER_ARCH
! 	MK_NVCCFLAGS += -arch=native
  endif # CUDA_DOCKER_ARCH
  ifdef LLAMA_CUDA_FORCE_DMMV
  	MK_NVCCFLAGS += -DGGML_CUDA_FORCE_DMMV

重新编译。

愿意参考资料

--------------------

yeqiang@yeqiang-MS-7B23:~/Downloads/ai/Chinese-LLaMA-Alpaca-2����−−����−���−���ℎ�������50�������52�������53�������60�������61�������62�������70�������72�������75�������80�������86�������87�������89�������90�������@�������−��−7�23: /���������/��/�ℎ�����−�����−������−2nvcc−−list−gpu−archcompute5​0compute5​2compute5​3compute6​0compute6​1compute6​2compute7​0compute7​2compute7​5compute8​0compute8​6compute8​7compute8​9compute9​0yeqiang@yeqiang−MS−7B23: /Downloads/ai/Chinese−LLaMA−Alpaca−2 cd /Downloads/ai/llama.cpp/ yeqiang@yeqiang-MS-7B23:/Downloads/ai/llama.cpp$ cat Makefile| grep compute_ MK_NVCCFLAGS += -arch=compute_87

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持,ubuntu,llama,linux

从您的信息中可以看出:

  1. 您的NVIDIA GPU支持多种CUDA架构,其中包括与RTX 2060相匹配的compute_75架构。

  2. ~/Downloads/ai/llama.cpp目录下的Makefile文件中,编译器标志(MK_NVCCFLAGS)指定了使用-arch=compute_87作为目标架构进行编译。

由于RTX 2060显卡对应的架构是compute_75,而Makefile中的设置针对的是更高版本的架构compute_87,这可能导致编译出的内核代码无法在RTX 2060上运行,从而出现“no kernel image is available for execution on the device”的错误。

解决这个问题的方法是修改Makefile,将-arch=compute_87更改为与RTX 2060兼容的架构,即-arch=compute_75。然后重新执行编译命令以生成适用于RTX 2060的内核代码。具体操作如下:

 

Bash

# 打开Makefile文件进行编辑
nano ~/Downloads/ai/llama.cpp/Makefile

# 将 -arch=compute_87 修改为 -arch=compute_75
# (请确保正确找到并替换相应行)
...
MK_NVCCFLAGS += -arch=compute_75
...

# 保存并关闭文件
CTRL+X, Y, Enter

# 然后重新执行make命令编译项目
make clean
make

这样,编译后的程序应该可以成功在您的NVIDIA GeForce RTX 2060显卡上运行了。

不同显卡对应的arch参数,请列表显示

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持,ubuntu,llama,linux

NVIDIA显卡的arch参数(在CUDA编译器nvcc中使用)对应的是GPU的计算能力版本,也称为SM架构。这里列出部分常见NVIDIA显卡系列与它们对应的CUDA计算能力(compute capability):

  • Kepler架构:

    • compute_30: GeForce GTX 600系列、Tesla K10/K20等
    • compute_35: GeForce GTX 700M系列、Quadro Kxxx系列等
  • Maxwell架构:

    • compute_50: GeForce GTX 900系列、TITAN X (Maxwell)等
    • compute_52: GeForce GTX 900M系列等移动版显卡
  • Pascal架构:

    • compute_60: GeForce GTX 10xx系列、TITAN Xp, Tesla P100等
    • compute_61: Quadro GP100, Tesla P40等
    • compute_62: GeForce GTX 1050/1050 Ti等
  • Volta架构:

    • compute_70: Tesla V100
  • Turing架构:

    • compute_75: GeForce RTX 20系列、TITAN RTX、Quadro RTX系列等
    • compute_70: Tesla T4 (虽然基于Turing架构,但其计算能力为7.5)
  • Ampere架构:

    • compute_80: A100 GPU、RTX 30系列的一部分型号
    • compute_86: RTX 3070、RTX 3080、RTX 3090等桌面显卡
    • compute_87: 针对某些特定场景优化的架构版本
    • compute_89: 可能用于专业或数据中心级产品
  • Ampere Next/Lovelace架构:

    • compute_90: RTX 40系列的部分型号

请根据您的具体显卡型号选择相应的arch参数来编译CUDA程序以获得最佳性能和兼容性。由于NVIDIA持续发布新的GPU架构,上述列表可能不全面,建议查阅最新的CUDA Toolkit文档获取最新信息。

---------------------

搞定,但是CPU使用率超出了预期

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持,ubuntu,llama,linux

CPU使用率高,GPU使用率基本没动,可以看到main的显存使用率

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持,ubuntu,llama,linux

期望的是CPU基本没负载,GPU全力工作,以后再慢慢研究。

总结:

1. Chinese-LLaMA-Alpaca-2这个项目从目前的使用上看,仅仅用到了里面的chat.sh脚本,这个应该是个训练项目,本地显卡太次,用不上。python依赖安装浪费了网络和时间

2. 网上下载训练好的模型+编译llama.cpp才是主要工作。

参考:

【AI实战】llama.cpp量化cuBLAS编译;nvcc fatal:Value ‘native‘ is not defined for option ‘gpu-architecture‘_nvcc fatal : value 'native' is not defined for opt-CSDN博客文章来源地址https://www.toymoban.com/news/detail-816829.html

到了这里,关于【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2 【2】启用GPU支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Stable Diffusion WebUI 集成 中文提示词插件 sd-webui-prompt-all-in-one Ubuntu22.04 rtx2060 6G

    重启webui,等待依赖安装结束 已经加载出中文提示词输入框了  这个模型太拉

    2024年02月16日
    浏览(53)
  • Stable Diffusion WebUI 集成 sd-webui-segment-anything sd-webui-inpaint-anything Ubuntu22.04 rtx2060 6G

    下载分割模型(segmentation models): 显存只有6G,选择l版本 lllyasviel/ControlNet-v1-1 at main 下载14个.pth模型文件,yaml文件已经在models目录下了   今天下载的新鲜文件,放阿里云盘了 ControlNet-v1-1-20230706 https://www.aliyundrive.com/s/LtpNFP8stg5  启动后又开始安装各种Python依赖。网络环境不行气

    2024年02月16日
    浏览(67)
  • ubuntu 22.04 jammy 换源

    Ubuntu 22.04 稳定版下载地址:https://ubuntu.com/download/desktop 安装好后,更新源列表: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sources.list sudo apt-get update sudo apt-get upgrade 清华源: 阿里源  

    2024年02月13日
    浏览(49)
  • Stable Diffusion WebUI rtx 2060 6G 高清修复 爆显存torch.cuda.OutOfMemoryError: CUDA out of memory.

    故障日志 零食解决办法,重启webui.sh进程,重新执行生成图片 日志   确实清晰不少 

    2024年02月04日
    浏览(49)
  • (Ubuntu22.04 Jammy)安装ROS2 Humble

    提示:以下内容是已经安装了ubuntu22.04 下进行安装ros2 请确保区域设置支持UTF-8,我们使用以下设置进行测试。 需要将ROS2 apt存储库添加到您的系统中,首先确保Ubuntu Universe存储库已启用。 接着添加带有apt的ROS 2 GPG密钥 然后将存储库添加到源列表中 设置存储库后,更新您的a

    2024年02月01日
    浏览(48)
  • ubuntu 22.04 安装 RTX 4090 显卡驱动

    1. 官网下载4090: 驱动程序 2. 关闭图形界面 对应的打开图形界面命令为: 3. tty登录之后 安装新版驱动: 如果报错,信息如下: ERROR: An NVIDIA kernel module \\\'nvidia-drm\\\' appears to already be loaded in your kernel.  This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA      

    2024年02月05日
    浏览(72)
  • Ubuntu 22.04.3 LTS安装

    最近换电脑了,准备重新装一下ubuntu。多年前装过ubuntu很老的版本,现在发现官网最新的LTS版本是 Ubuntu 22.04.3 LTS 版本。那重新装的话,肯定装最新的版本了。这里我记录下自己的安装过程,作为以后的笔记查看。 我的环境: 软件:windows11 硬件:英特尔CPU 我这里装的Ubuntu系

    2024年02月07日
    浏览(41)
  • 【linux】Ubuntu 22.04.3 LTS截屏

    交互式录屏  Shift+CtrltAlt+R 交互式截图  Print 对窗口进行截图  Alt+Print 截图  Shift+Print 快捷键可能取决于使用的桌面环境和个人的键盘快捷键设置。如果上述快捷键不起作用,可能需要检查系统设置中的键盘快捷键部分,以了解系统中截图的快捷键是什么,或者进行自定义设

    2024年02月02日
    浏览(37)
  • Ubuntu22.04 LTS 显卡相关命令

    一、查看显卡型号 二、查看显卡驱动版本 三、查看CUDA、cuDNN版本 四:详细的NVIDIA显卡信息 命令:nvidia-smi(详细的nvidia显卡信息) 注:显示的CUDA版本跟上述的两种方法不一致 一、卸载显卡驱动 二、卸载CUDA 有的安装目录里面没有上面那个pl文件,可以使用下面的命令进行卸

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包