首页 > 编程语言 >GPU部署llama-cpp-python(llama.cpp通用)

GPU部署llama-cpp-python(llama.cpp通用)

时间:2023-11-26 15:04:29浏览次数:37  
标签:python cuda llama cpp GPU com

title: GPU部署llama-cpp-python(llama.cpp通用)
banner_img: https://cdn.studyinglover.com/pic/2023/08/a5e39db5abf0853e6c456728df8bd971.jpg
date: 2023-8-6 23:01:00
tags:
- 踩坑

GPU部署llama-cpp-python(llama.cpp通用)

通用流程

我们的安装平台是Ubuntu20.04,Python 3.8.10,cuda 11.6。

首先确保自己是否已经安装了cuda,输入

nvcc -V

有类似下面的输出即可

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Fri_Dec_17_18:16:03_PST_2021
Cuda compilation tools, release 11.6, V11.6.55
Build cuda_11.6.r11.6/compiler.30794723_0

我们选用 cuBLAS 加速后端代理。直接按照下面命令安装

export LLAMA_CUBLAS=1
CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python

不出意外的话就安装好了,但是你会出现很多意外,请你努力在一堆红色的报错中找出关键出错点,然后搜索,在最后我给出了几个我遇到的。

运行

运行和CPU直接运行相似,只是需要加入几个参数.

python3 -m llama_cpp.server --model llama-2-70b-chat.ggmlv3.q5_K_M.bin --n_threads 30 --n_gpu_layers 200

n_threads 是一个CPU也有的参数,代表最多使用多少线程。

n_gpu_layers 是一个GPU部署非常重要的一步,代表大语言模型有多少层在GPU运算,如果你的显存出现 out of memory 那就减小 n_gpu_layers

关于多卡

亲测多卡没有遇到什么大坑,只要torch.cuda.is_available()torch.cuda.device_count()正常就可以跑起来。

两张 Tesla T4 的卡推理70B大概半分钟就可以出结果。

报错解决

Check for working CUDA compiler: /usr/local/cuda/bin/nvcc - skipped

参考 https://github.com/ggerganov/llama.cpp/issues/1832
系统安装过程中没找到你的cuda在哪里,所以在pip安装之前先设置一个环境变量,把/usr/local/cuda-x.y改成你的cuda路径

export CUDA_PATH=/usr/local/cuda-x.y

'f16c': expected a number

这是你的cuda版本太低了,升级到较新版本(11.6可用)。

或者参考 https://github.com/ggerganov/llama.cpp/issues/1467https://github.com/marella/ctransformers/issues/53 中提到的命令和构建(我没有尝试,有谁试了可以请我结果)。

Value 'sm_30' is not defined for option 'gpu-name' Tesla T

先运行下面的命令

apt-cache policy nvidia-cuda-toolkit

如果版本是1.0 那么请运行 sudo apt remove nvidia-cuda-toolkit

标签:python,cuda,llama,cpp,GPU,com
From: https://www.cnblogs.com/studyinglover/p/17857225.html

相关文章

  • 快速上手llama2.c
    title:快速上手llama2.cbanner_img:https://github.com/karpathy/llama2.c/blob/master/assets/llama_cute.jpgdate:2023-7-2516:19:00tags:-踩坑快速上手llama2.cllama2.c一个完整的解决方案,可以使用PyTorch从头开始训练的Llama2LLM(LightweightLanguageModel)模型......
  • 快速上手llama2.c(更新版)
    title:快速上手llama2.c(更新版)banner_img:https://github.com/karpathy/llama2.c/blob/master/assets/llama_cute.jpgdate:2023-7-2816:31:00tags:-踩坑快速上手llama2.c(更新版)在上一次我同时在我的博客和知乎发布了快速上手llama2.c之后,我一个小透明也收获了不......
  • 【Python爬虫】第10篇:js逆向解析和Mongodb数据库。md集合文档(已分享,附代码)
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。全套笔记和代码自取地址:请移步这里感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~共8章,37子模块JS的解析......
  • 【Python】异步迭代器与普通迭代器的区别
    异步迭代器是一个协程,并且每个迭代器返回一个在asyncio事件循环中调度和执行的等待对象,所以我们可以在迭代器的主体内执行和等待awaitable对象。普通迭代器需要实现__iter__和__next__函数,异步迭代器需要实现__aiter__和__anext__函数。......
  • 【Python】async与await用法
    async用于修饰函数,将普通函数变为异步函数。asyncdeft2():print(2)直接调用异步函数不会返回结果,而是返回一个协程对象。协程需要通过其他方式来驱动,如async.run函数。await函数只能在异步函数中使用,可以通过该关键字,挂起当前协程,让另一个协程执行完毕,再次执行本协程......
  • 【Python】迭代器与可迭代对象的区别与关系
    定义可迭代对象:能逐一返回其成员的对象,如列表、字符串、字典等;迭代器:表示一连串数据流的对象;区别可迭代对象实现了__iter__方法,可以通过该方法返回迭代器;迭代器对象实现了__iter__和__next__方法,__iter__用来返回其本身,__next__用来获取下一个成员。联系迭代器一定是可迭......
  • 【Python】使用vscode编码提示找不到模块
    问题描述已经使用pip安装了模块,但是使用vscode没有代码提示。解决办法这种情况一般是因为pc安装了多个python版本,安装模块的pip不是vscode指定的编译环境。点击右下角,选择环境变量中配置的python版本。解决问题:......
  • Python 潮流周刊#28:两种线程池、四种优化程序的方法
    你好,我是猫哥。这里每周分享优质的Python、AI及通用技术内容,大部分为英文。本周刊开源,欢迎投稿。另有电报频道作为副刊,补充发布更加丰富的资讯。......
  • 运输问题和指派问题——Python实现
    随着社会和经济的不断进步,现代物流业蓬勃发展,如何充分利用时间、信息、仓储、配送和联运体系创造更多的价值,是物流运作必须解决的问题。日益复杂的运输活动使得运输问题变得越来越庞杂,但是其核心思想仍然是实现现有资源的最优化配置。运输问题经常出现在计划货物配送和从某些供给......
  • python 控制台 等待用户输入
    Python控制台等待用户输入的实现方法1.总览在Python中,要实现控制台等待用户输入的功能,可以使用input()函数来实现。input()函数会暂停程序的执行,直到用户输入一条信息并按下回车键。本文将详细介绍如何使用input()函数实现这一功能。2.实现步骤下表展示了整个实现过程的步骤......