from knn_cuda import knn安装过程遇到的问题

本文记录了在Windows环境下使用pip安装KNN_CUDA扩展遇到的问题及解决过程。作者首先尝试直接安装预编译的whl文件,但遇到了UnicodeDecodeError。之后尝试按照官方指南编译源代码,又遇到了knn.so与PyTorch不匹配的错误。最终通过调整PyTorch版本解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先安装的总体步骤
在这里插入图片描述

windows下安装

本来尝试

pip install --upgrade https://github.com/unlimblue/KNN_CUDA/releases/download/0.2/KNN_CUDA-0.2-py3-none-any.whl  -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com

进行安装,但是安装完成后报错

File "E:\Anaconda_app\lib\site-packages\torch\utils\cpp_extension.py", line 1681, in _run_ninja_build message += f": {error.output.decode()}" # type: ignore[union-attr] 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 804: invalid continuation byte

所以打算按照for windows步骤重新安装

提前实验过的博文

按照此博客走一遍

过程中遇到错误

过程中执行make,遇到makefile中

ifndef NINJA 
	copy %cd%\ninja C:\Windows\System32\bin
endif 

在这里插入图片描述
直接把语句用‘#’注释掉,再手动将下载的KNN_CUDA根目录下的ninja复制到C:\Windows\System32\bin下(或者C:\Windows\System32)s

运行过程中遇到问题:

  File "/root/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1092, in load
    keep_intermediates=keep_intermediates)
  File "/root/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1318, in _jit_compile
    return _import_module_from_library(name, build_directory, is_python_module)
  File "/root/.local/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1701, in _import_module_from_library
    module = importlib.util.module_from_spec(spec)
ImportError: /root/.local/lib/python3.7/site-packages/knn_cuda/csrc/_ext/knn/knn.so: undefined symbol: _ZN2at4_ops19empty_memory_format4callEN3c108ArrayRefINS2_6SymIntEEENS2_8optionalINS2_10ScalarTypeEEENS6_INS2_6LayoutEEENS6_INS2_6DeviceEEENS6_IbEENS6_INS2_12MemoryFormatEEE

问题应该在于编译好的knn.so和pytorch不匹配,因为自己有在中途重新更改过torch版本,所以此时重新换回原来的torch版本

如果其他服务器有编译好的build文件,迁移到同环境不同服务器,也可以直接复制粘贴文件,不用费劲重新编译

### 安装 PyTorch KNN 库的方法 PyTorch KNN安装可以通过多种方式实现,具体取决于用户的环境需求以及硬件支持情况。以下是几种常见的安装方法: #### 方法一:通过预编译 Wheel 包安装 对于大多数用户而言,推荐使用预编译的 wheel 包来简化安装过程。这种方式无需手动配置 CUDA 或其他依赖项。 运行以下命令以安装 `knn-cuda`: ```bash pip install knn-cuda ``` 此命令适用于已经正确设置好 PyTorchCUDA 环境的情况[^4]。 --- #### 方法二:从源代码编译安装 如果需要自定义功能或者针对特定版本优化性能,则可以选择从源码编译的方式安装。这通常用于开发阶段或特殊场景下的调试。 执行以下步骤完成编译和安装: 1. **克隆仓库** 使用 Git 将官方存储库克隆至本地: ```bash git clone https://github.com/your-repo/knn-cuda.git cd knn-cuda ``` 2. **构建扩展模块** 执行 Python 脚本来编译 C++/CUDA 部分代码: ```bash python setup.py install ``` 3. **验证安装成功否** 可以利用 `pytest` 工具测试已编译好的包是否正常工作: ```bash pip install pytest pytest tests/test_knn_cuda.py ``` 如果所有测试用例均通过,则说明安装无误[^1]。 --- #### 方法三:结合现有模型推理部署 当仅需在推断模式下使用该库时,可进一步优化资源消耗并提升效率。例如,在实际应用中可通过禁用梯度计算降低显存占用率: ```python import torch from knn_cuda import KNearestNeighbor # 假设这是目标 API 名称 with torch.no_grad(): model = KNearestNeighbor() input_tensor = torch.randn(1, 3, 224, 224).cuda() # 输入张量 output = model(input_tensor) ``` 上述代码片段展示了如何在推理过程中关闭自动求导机制,从而节省内存开销[^3]。 --- ### 注意事项 - 确保当前环境中已正确安装对应版本的 PyTorchCUDA。 - 若遇到兼容性问题,请尝试更新相关组件或将项目迁移到虚拟隔离空间(如 Conda)重新搭建适配框架。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值