文章目录
尝试了网上很多方法,最终只剩下载源码用cmake编译。试了好久才踩完所有的坑!
(1)安装vs_BuildTools(2022版对应cuda12.4切记!)
①下载地址:https://aka.ms/vs/17/release/vs_Community.exe
②安装界面选择工作负载:在"工作负载"选项卡中,必须勾选"使用 C++ 的桌面开发"。

③勾选单个组件(重要):切换到"单个组件"选项卡,搜索并勾选 C++ CMake tools for Windows。这是确保 CMake 能正常找到 Visual Studio 编译器的重要组件。

(2)重新运行cuda安装程序
①直接运行 CUDA 12.4 的安装包,选择"自定义 (Custom)"安装,然后在组件列表里确保勾选"Visual Studio Integration"。安装程序检测到 VS 2022 后,就会自动完成集成。完成后记得重启电脑。
②如果找不到"Visual Studio Integration"选项,直接把cuda安装目录中的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\extras\visual_studio_integration\MSBuildExtensions 文件夹下4个文件复制到 C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\BuildCustomizations 路径下。重新打开 Visual Studio 2022,集成即完成。

③重启电脑
(3)安装GIT
下载地址:https://git-scm.com/download/win
安装好后命令行里进行最低速度和最长下载时间配置
bash
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
(4)安装编译环境
bash
# setuptools已安装特定版本,这里无需再安装
pip install cmake ninja wheel -i https://pypi.tuna.tsinghua.edu.cn/simple
(5)下载源码
①利用GIT克隆完整安装包和第三方依赖库(若能一次成功不管②③④)
bash
git clone --recurse-submodules https://github.com/abetlen/llama-cpp-python.git E:\Project\AIVoice\llama-ccp-python
# 国内镜像稍微快一点
git clone --recurse-submodules https://gitclone.com/github.com/abetlen/llama-cpp-python.git E:\Project\AIVoice\llama-ccp-python
②若上述第三方库llama.cpp git失败,则手动删除主文件目录下的~\llama-ccp-python\vendor\llama.ccp文件夹,从以下网址手动下载子模块:https://github.com/ggerganov/llama.cpp 。
③下载后解压到~ \llama-ccp-python\vendor\ 目录下,确保解压后的文件夹路径为:~\llama-ccp-python\vendor\llama.cpp。
④最后删除子模块配置(避免 Git 后续干扰)在 ~ \llama-ccp-python 目录下,编辑 .gitmodules 文件,将 llama.cpp 的条目注释掉或删除。
(6)编译源码
在anaconda虚拟环境下输入以下命令,编译过程中也需要联网:
bash
set CMAKE_ARGS=-DGGML_CUDA=on -DCUDAToolkit_ROOT="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.4" -DCMAKE_CUDA_COMPILER="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.4/bin/nvcc.exe"
set FORCE_CMAKE=1
pip install -e E:\Project\AIVoice\llama-ccp-python

(7)测试安装
在anaconda虚拟环境中输入 python,在pothon编译环境中依次输入以下命令:
python
import llama_cpp
print(llama_cpp.llama_supports_gpu_offload()
返回信息如下:

终于成功安装了!!!