ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

openKE中的TransE安装尝试

2021-10-27 22:35:11  阅读:294  来源: 互联网

标签:尝试 openKE 路径 cuda install 服务器 TransE openke


纯个人记录过程,写的十分冗余!!! =-=

尝试1

先尝试能不能安装上openKE
1.网址:https://blog.csdn.net/wangdong1106/article/details/109597447
先下载了pthread for windows,按照文中说的过程配置完成
2.随后去openKE官网上拉下来openKE
http://139.129.163.161/static/notes/installation.html
在拉的过程中遇到两个问题,第一个是
在这里插入图片描述
解决方法是输入命令:

git config --global http.sslVerify "false"

另一个问题是
在这里插入图片描述
这个的原因应该是因为网络的原因,出现这个问题的时候git也登不上去,等能登上去的时候就解决问题了…

然后在openKE的base里新建visual studio的dll类型C++文件,过程为文件—新建—-项目—Win32控制台应用程序。应用程序类型选中DLL(D), 点击完成。

之后按照上面链接的文章中去修改配置,但是感觉这个不是调用这个包而是直接使用它的example

╰(°▽°)╯!example!对啊,可以参考example中是如何调用包的,然后仿照调用就可以了!那就可以尝试直接去看TransE的example

尝试2

官网直接有一个模块介绍如何得到embedding matrix

既然在windows上安装很困难,尝试去服务器上做

在服务器上按照官网的步骤
将openKE拉下来,进入到openke文件夹中,运行bash make.sh,按照他需要的格式准备好3个数据集(先用它给的),然后在openke文件夹下新建一个训练模型的python文件,具体代码在官网中,在运行该代码的时候提示没有pytoch,于是配置pytorch环境,具体见这篇文章

尝试3

1 登录linux服务器,在服务器上将OpenKE拉下来,编译C++文件

git clone https://github.com/thunlp/OpenKE
cd OpenKE
cd openke
bash make.sh

2 在服务器上配置pytorch和cuda,因为在服务器上我没有root权限,参考文章【1】

具体操作为:
1)输入nvidia-smi查看自己的显卡驱动版本以及支持的最大CUDA版本,我的如下:

有一些教程里会有如何升级显卡驱动等,但因为我没有root权限,就直接对照着表格,选择了CUDA10.0的版本
在这里插入图片描述
2)输入uname -a与cat /proc/version查看系统的信息,查找到Ubuntu的版本号,我的版本号是16.04,进入英伟达CUDA下载页面,选择适合系统的toolkit下载,选择下图中的runfile(local),下方将出现下载的按钮,Download Base Installer,下载到本地再通过winSCP传到服务器上
在这里插入图片描述
在这里插入图片描述
3)通过网址下载CUDNN,根据自己的cuda的版本选择下载,我下载的是下图框出来的,将下载后的.tar文件也上传到服务器上
在这里插入图片描述
4)安装CUDA
给cuda加可执行权限,并运行run文件

chmod +x cuda_10.0.130_410.48_linux.run
sh cuda_10.0.130_410.48_linux.run

一直按回车阅读到100%,弹出是否accept,输入accept,其中nvidia accelerated graphics driver和一个samples.选no,其他都选yes,其中有让输入路径的选择自己知道的路径就可,最好不要把路径命名为cuda,因为之后解压tar文件会解压出一个cuda,如下:
在这里插入图片描述
成功后会显示如下界面
在这里插入图片描述
5)修改环境变量
输入vim ~/.bashrc,添加以下代码:(其中你的路径就是在上一步安装的时候你输入的路径)

export CUDA_HOME=$CUDA_HOME:你的路径
export PATH=$PATH:你的路径/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的路径/lib64

保存后输入source ~/.bashrc

6)安装CUDNN
解压cudnn:

tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz

此时目录中有一个cuda文件夹,把文件复制到cuda文件夹中

cp cuda/include/cudnn.h 你的路径/include/
cp cuda/lib64/libcudnn* 你的路径/lib64/

修改权限,cudnn安装完成

chmod a+r 你的路径/include/cudnn.h 你的路径/lib64/libcudnn*

输入nvcc -v查看是否安装成功
在这里插入图片描述

7)由于我的服务器里安装了anaconda,所以这里没有这部分内容,安装pytorch就是在官网中找到对应的版本执行命令

conda install pytorch torchvision cudatoolkit=10.0

此时输入python,执行import torch是可以的,但是遇到一个问题就是torch.cuda.is_available()返回结果为False,解决方法见此文章

3 按照openke的github中的Installation的步骤一步一步操作(其中前三步之前已经做完了)

cd ../
cp examples/train_transe_FB15K237.py ./
python train_transe_FB15K237.py

报错

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22’ not found

解决该问题尝试1:升级gcc
升级的过程中有一个make的步骤,需要很长时间大概4个小时吧,但是执行make install时由于没有在一些位置创建文件的权限导致不成功

尝试2:降低scipy版本,我用conda install scipy==1.3.1报错如下,改用为pip install scipy==1.3.1
在这里插入图片描述
运行时报错
在这里插入图片描述
尝试更新了pip以及安装,但仍然报错,有文章说可以通过sudo apt-get install gfortran来解决,但无权限

pip install --upgrade pip setuptools wheel
pip install p5py
pip install PEP517

尝试4

因为之前这些都是在自己的新建的一个虚拟环境下安装的,后来退回到base环境,上面的那个错误居然消失了,但是base环境没有cuda,重新安装尝试一下,还是报错

尝试5

对不起了兄弟们,换了个服务器,好了,运行的时候遇到了无法编译c的问题,把之前这个服务器生成的openke/release文件夹直接拷贝过去了,目前的报错是
在这里插入图片描述
这个问题的解决方法见这篇文章

最后终于跑通了
在这里插入图片描述
最后又出了一个小小的问题,在OpenKE里新建一个checkpoint文件夹就好了~
在这里插入图片描述
得到transE后的向量的代码为:

embeddings = transe.get_parameters("list")
embeddings = json.dumps(embeddings)
with open('xy1train.txt', 'w') as f:
    f.write(embeddings)

运行自己的数据时出现了一个问题,因为我的数据中并不是所有的entity都用到了train2id.txt中,所以我将没有用到的相关的entity数据在entity2id.txt中删掉了,但是这样就跑不通报错如下图,解决方法就是将所有的entity数据都加回来了,个人推测可能是因为entity的id是从0排序的,里面可能使用了一些什么机制导致如果不连号的话就会报错
最后可以将不连续的删掉,只要entity的id是连续的就可以了

后来对config中的Trainer.py进行了修改,新建Trainer3.py,运行时报错如下
在这里插入图片描述
解决方法是将train_transe_xy3.py中的

from openke.config import Trainer, Tester
改成了
from openke.config.Trainer3 import Trainer3

标签:尝试,openKE,路径,cuda,install,服务器,TransE,openke
来源: https://blog.csdn.net/feng_yue77/article/details/118147899

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有