当前位置: 首页 > news >正文

swe-bench环境安装踩坑

swe-bench环境安装踩坑

最近在使用swe-bench评估代码效果时,安装环境碰到一些问题,现总结一下,避免下次要重新踩坑。

1.安装pyserini踩坑

安装swe-bench的环境,在使用检索功能时,需要依赖pyserini,安装pyserini的坑如下

jdk21安装

centos7 安装JDK21亲测有效

在/usr/local目录下执行或解压后mv到该目录:
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
tar -zxvf jdk-21_linux-aarch64_bin.tar.gz

配置环境变量:vim /etc/profile
export JAVA_HOME=/usr/local/jdk-21.0.6
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

立即生效
source /etc/profile

验证java配置
 java
 javac    
 java -version 

创建一个新的指向新JDK版本的软链接
rm /usr/bin/java    # 删除当前的/usr/bin/java软链接(如果存在)  
ln -s /usr/local/jdk-21.0.6/bin/java /usr/bin/java    # 软链接相当于windows中的快捷方式

1.1使用配套的pyserini版本

在swe-bench环境,建议使用稳定的0.16.0的版本:

pip install pyserini==0.16.0

1.2 GLIBXX问题

按pyserini的官网安装后,运行

python -m swebench.inference.make_datasets.bm25_retrieval \
    --dataset_name_or_path princeton-nlp/SWE-bench_Lite \
    --output_dir ./retrieval_results \
    --splits test

碰到问题时,碰到GLIBXX_3.4.9或GLIBXX_3.4.6的问题,如下:
在这里插入图片描述
在这里插入图片描述

1.2.1 解决方案:

解决的方案包括多种,这里采用对系统环境影响最小的方案

a) 推荐方案
# 激活虚拟环境
conda activate swe_bench

# 强制升级到最新版 libstdcxx-ng(包含 GLIBCXX_3.4.29)
conda install -c conda-forge "libstdcxx-ng>=13" --force-reinstall

# 验证 GLIBCXX 版本
strings ${CONDA_PREFIX}/lib/libstdc++.so.6 | grep GLIBCXX_3.4.29

若输出中包含 GLIBCXX_3.4.29,则表示成功。

其他参考方案:

b) 使用 Conda-Forge 安装 Faiss
# 先卸载现有 faiss(如果是通过 pip 安装的)
pip uninstall faiss-cpu faiss-gpu

# 通过 Conda-Forge 安装 faiss
conda install -c conda-forge faiss-cpu  # CPU 版本
# 或
conda install -c conda-forge faiss-gpu  # GPU 版本
c) 从源码编译 Faiss

如果预编译的二进制包不兼容,可手动编译适配当前系统的版本:

conda activate swe_bench
conda install -c conda-forge numpy swig openblas

# 下载源码
git clone https://github.com/facebookresearch/faiss.git
cd faiss
git checkout v1.8.0  # 使用稳定版本

# 编译安装
cmake -B build -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_PYTHON=ON .
make -C build -j4
pip install .
d) 强制使用 Conda 的 GLIBCXX

通过环境变量指定优先使用 Conda 环境内的 libstdc++.so.6:

# 临时生效
export LD_LIBRARY_PATH=${CONDA_PREFIX}/lib:$LD_LIBRARY_PATH

# 永久生效(添加到 ~/.bashrc 或环境激活脚本)
echo 'export LD_LIBRARY_PATH=${CONDA_PREFIX}/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
e) 升级系统 GLIBC++(需 root 权限)

仅建议在可控制的环境(如容器或开发机)中操作:

# CentOS/RHEL 7
sudo yum install centos-release-scl
sudo yum install devtoolset-11
scl enable devtoolset-11 bash

# Ubuntu 18.04
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt install libstdc++6=12.1.0-2ubuntu1~18.04

# 更新动态库缓存
sudo ldconfig

3. numpy版本过高的问题

运行上述脚本时会提示运行的numpy版本过高,可降低numpy的版本

pip install numpy==1.26.4

相关文章:

  • 如何利用 AI 进行 A/B 测试的优化?
  • 【设计模式】过滤器模式
  • 手机显示5GA图标的条件
  • Oracle中文一二三四排序【失败】
  • Linux防火墙的iptables命令示例与详细解释
  • deepseek v3-0324实现数学方程式绘制曲线功能
  • Redis-14.在Java中操作Redis-Spring Data Redis使用方式-操作列表类型的数据
  • 西门子TCP通讯过程中硬件连接突然断开
  • 轻帆云智能ITSM应用最佳实践,助力IT共享服务中心高效运营
  • Redis:集群
  • 广告推荐算法:COSMO算法与A9算法的对比
  • 如何让AI帮你做用户运营:用户消费偏好分层和洞察
  • Java之JDBC数据库连接技术
  • git 操作记录
  • 多账号安全登录与浏览器指纹管理的实现方案
  • 基于AvgPool与自编码器的语音识别
  • 去中心化自治组织(DAO):革新未来治理的下一站
  • 2021-07-05 C,C++定义结构体变量按年龄进行升序排序
  • Adam优化器
  • talant---决策分析软件产品介绍
  • 孙磊已任中国常驻联合国副代表、特命全权大使
  • 哈莉·贝瑞、洪常秀等出任戛纳主竞赛单元评委
  • 王毅:坚持金砖团结合作,改革完善全球治理
  • “杭州六小龙”的招聘迷局
  • 专访丨青年作家杜梨:以动物的视角去观察这个世界
  • 诗词文赋俱当歌,听一听古诗词中的音乐性