仓库链接:github.com/manycore-research/SpatialLM
部署推理
总体思路是按照readme一步一步整。此处仅仅记录几个注意事项:
Installation
(1)官方cuda版本挺高的,我这边nvidia-smi最高版本是12.2,所以没有利用12.4,而是改用了12.2,所幸依赖库的版本不需要修改,没有版本问题。
(2)conda install -y nvidia/label/cuda-12.4.0::cuda-toolkit conda-forge::sparsehash部分nvcc -V发现cuda-toolkit已经装好了,所以此处只安装了conda-forge::sparsehash。
(3) Install dependencies with poetry部分,由于poetry没用过,所以改用pip install -r requirements.txt进行安装的,只将pyproject.toml中dependencies部分写到requirements.txt中即可。
举例:
修改前:
toml = "^0.10.2"
tokenizers = ">=0.19.0,<0.20.4"
修改后:
toml==0.10.2
tokenizers>=0.19.0,<0.20.4
(4)此处需要注意transformers的版本,一开始安装的是允许的最低版本,推理的时候出现如下报错:
python inference.py --point_cloud pcd/scene0000_00.ply --output pcd/scene0000_00.txt --model_path manycore-research/SpatialLM-Llama-1B
Traceback (most recent call last):
File "/home/jovyan/scf/code/SpatialLM/inference.py", line 168, in <module>
tokenizer = AutoTokenizer.from_pretrained(args.model_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jovyan/.conda/envs/spatiallm/lib/python3.11/site-packages/transformers/models/auto/tokenization_auto.py", line 880, in from_pretrained
return tokenizer_class.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jovyan/.conda/envs/spatiallm/lib/python3.11/site-packages/transformers/tokenization_utils_base.py", line 2110, in from_pretrained
return cls._from_pretrained(
^^^^^^^^^^^^^^^^^^^^^
File "/home/jovyan/.conda/envs/spatiallm/lib/python3.11/site-packages/transformers/tokenization_utils_base.py", line 2336, in _from_pretrained
tokenizer = cls(*init_inputs, **init_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jovyan/.conda/envs/spatiallm/lib/python3.11/site-packages/transformers/tokenization_utils_fast.py", line 114, in __init__
fast_tokenizer = TokenizerFast.from_file(fast_tokenizer_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Exception: data did not match any variant of untagged enum ModelWrapper at line 1251003 column 3
升级transformers到4.46.1就可以解决,深层原因待研究。
复现&&自测
命令说明
下载模型:
huggingface-cli download --resume-download --local-dir-use-symlinks False manycore-research/SpatialLM-Llama-1B --local-dir D:\Code\KnowLM\knowlm-13b-ie
(注意:运行该命令之前,建立一个模型的文件夹,在这个文件夹下执行上述下载命令,防止文件散落各处。)
推理:
python inference.py --point_cloud pcd/gejian.ply --output pcd/gejian.txt --model_path ./SpatialLM-Llama-1B
可视化:
python visualize.py --point_cloud pcd/gejian.ply --layout pcd/gejian.txt --save pcd/gejian.rrd
rerun gejian.rrd
复现scene0000_00.ply
整体效果还比较符合预期,如下图所示:
对于门的识别存在一些误检,如下图所示:
后续看看论文里面的推理结果,看是否一致。
自采数据测试
厕所隔间数据检测结果如下:
可以看出,整体的位置存在较大偏差,应该是数据预处理与原文有些gap,后续研究下,再推理试试。
带着问题了解项目
未完待续