我一直在我的Ubuntu 20.04与我的NVIDIA GTX 1060 6 GB玩oobabooga text-generation-webui几个星期没有问题.我一直在使用llama 2-chat模型在我的RAM和NVIDIA VRAM之间共享内存.我安装没有太大的问题后,其存储库上的介绍.
所以我现在想要的是使用模型加载器llama-cpp
及其包llama-cpp-python
绑定来自己玩它。所以使用oobabooga text-generation-webui使用的相同的miniconda 3环境,我启动了一个jupyter notebook,我可以进行推断,一切都运行良好 * 但仅适用于CPU*。
下面是一个工作示例,
from llama_cpp import Llama
llm = Llama(model_path="/mnt/LxData/llama.cpp/models/meta-llama2/llama-2-7b-chat/ggml-model-q4_0.bin",
n_gpu_layers=32, n_threads=6, n_ctx=3584, n_batch=521, verbose=True),
prompt = """[INST] <<SYS>>
Name the planets in the solar system?
<</SYS>>
[/INST]
"""
output = llm(prompt, max_tokens=350, echo=True)
print(output['choices'][0]['text'].split('[/INST]')[-1])
字符串
当然!下面是我们太阳系的八大行星,按照离太阳最近到最远的顺序排列:
1.汞
1.金星
1.地球
1.火星
1.木星
1.土星
1.天王星
1.海王星
注意,冥王星以前被认为是一颗行星,但由于它的小尺寸和独特的轨道,现在被归类为矮行星。
我也想使用GPU进行推理。出了什么问题?为什么我不能像n_gpu_layers=32
参数指定的那样卸载到GPU上,也不能像oobabooga text-generation-webui
在同一个miniconda环境中已经做的那样卸载到GPU上,而没有任何问题?
4条答案
按热度按时间pokxtpni1#
经过搜索和痛苦相当3个星期,我发现了这个issue的存储库.
所以
llama-cpp-python
需要知道libllama.so
共享库在哪里。所以在运行我的python解释器,jupyter notebook等之前导出它就行了。为了使用
oobabooga text-generation-webui
使用的miniconda 3安装,我将其导出如下:字符串
瞧!
在导入
from llama_cpp import Llama
时,ggml_init_cuisine:找到1 CUDA设备:设备0:NVIDIA GeForce GTX 1060,计算能力6.1
和
型
...
llama_model_load_internal:using CUDA for GPU acceleration llama_model_load_internal:所需内存= 2381.32 MB(+ 1026.00 MB per state)llama_model_load_internal:allocating batch_size x(512 kB + n_ctx 128 B)=暂存缓冲区llama_model_load_internal的480 MB VRAM:将28个重复层卸载到GPU llama_model_load_internal:卸载28/35层到GPU llama_model_load_internal:使用的总VRAM:3521 MB.
rlcwz9us2#
我通过确保安装了cuda toolkit来修复这个问题:
字符串
如果没有,我安装了cuda toolkit。
安装cuda toolkit后,您应该可以访问CUDA_HOME:
型
然后重新安装llama-cpp:
型
umuewwlo3#
对于那些希望了解更多有关为llama-cpp-python启用GPU支持的具体步骤的详细信息的人,您需要执行以下操作:
1.下载适用于您的操作系统的cuda工具包(https://developer.nvidia.com/cuda-downloads)
1.重新编译llama-cpp-python,将适当的环境变量设置为指向您的nvcc安装(包含在cuda工具包中),并指定要编译的cuda架构。例如,如果我在上面的步骤中下载了cuda-toolkit-12-3,并希望为所有主要的cuda架构编译llama-cpp-python,我将运行:
CMAKE_CUDA_ARCHITECTURES
的其他有效值是all
(用于所有)或native
,用于为主机系统的GPU架构构建。(请注意,在构建容器映像时,GPU通常不可用,因此请避免在Dockerfile中使用-DCMAKE_CUDA_ARCHITECTURES=native
,除非您知道自己在做什么)下面是一个Dockerfile,它展示了上述步骤的一个示例。它使用Debian基础映像(python:3.10-bookworm),下载并安装适用于操作系统的cuda工具包,并编译支持cuda的llama-cpp-python(沿着jupyterlab):
型
sbdsn5lh4#
Ryan的回答帮助我在Windows 11和PowerShell上解决了这个问题:
字符串
不用说,将nvcc.exe的路径替换为您机器上的任何内容。
如果你不想要的话,可以删除
[server]
。