OpenKE 的探索使用(VM 的巨坑)
前言及后续更新
🍀 前言
本想复现知识图谱嵌入模型(KGE)系列的论文,看到 Github 上的经典项目多推荐或已整合进 OpenKE 框架,不再维护,但是 OpenKE 要求在 Linux 环境下,虽然 windows 环境也能用 OpenKE,有的博主也出有相关文章,但评论区好多叫苦不迭,我没有尝试。于是我在虚拟机中装好了 ubuntu20.04 并配置好 pytorch 环境,按照网上的教程,直到输入最终的运行命令,发现GPU环境没有配好,搜遍网上教程,首先安装 Nvidia 驱动就让我崩溃,与网上的教程步骤不符,命令并不推荐安装哪个版本,我去官网查了版本后,安装成功,但是nvidia-smi
始终处于不能显示信息,报错NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
,尝试了网上各种方法未能解决,最终看到文章说,虚拟机中不支持Nvidia驱动,这才停止。后续我会考虑逐个在windows上复现经典论文,安装双系统,或直接重装成Linux系统。本文第一、二节大家可以借鉴,第三节部分解决方案可以参考,其余章节大家就当笑话看吧
🍀 后续更新
WIN 11 安装 Ubuntu 20.04 (双系统)(2022.02.28)
Ubuntu 20.04(双系统) 弹窗根目录容量为 0 的解决办法(2022.03.01)
Ubuntu 20.04 系统(双系统环境下)中深度学习环境配置(Pytorch + GPU)
OpenKE 的使用(一)— TransE 论文复现
TransE,知识图谱嵌入(KGE)源码阅读(一)
OpenKE 的使用(二)— TransX 系列论文复现
OpenKE 的使用(三)— Rescal 和 Dismult 论文复现
OpenKE 的使用(四)— HolE 和 ComplEx 论文复现
ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)
一、准备工作:VM 中 Ubuntu 20.04 系统 git 的配置及与 github 的连接
🍀 ubuntu 中 git 安装
🍀 ubuntu 中 git 配置
配置本地用户名和邮箱,算是本地 git 的一个标识,这和 github 一点关系也没有
🍀 生成本地 SSH Key
SSH 为 Secure Shell 的缩写,为建立在应用层基础上的安全协议,由 IETF 的网络小组(Network Working Group)所制定,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他多种操作平台,在正确使用时可弥补网络中的漏洞。
🍀 在 GitHub 上配置 SSH
在本地生成的公钥放到 github 对应位置,这样就使得本地仓库与github建立练习,使得用 git 命令可以对 github 进行操作和管理
上述我的第一个命令有问题,少加了参数,不过不要紧,改为:
ssh-keygen -t rsa -C "github_name" #其中 github_name 为 github 注册的邮箱
🍀 检测是否可用
ssh -T git@github.com
二、OpenKE 的介绍和使用
介绍: 知识表示学习框架 OpenKE-PyTorch版 使用指南
使用:
🍀 下载 PyTorch 版代码到本地
git clone -b OpenKE-PyTorch https://github.com/thunlp/OpenKE
🍀 进入目录,编译 make.sh 文件
cd OpenKE/openke
bash make.sh
出现错误是因为没有安装g++编译器,运行以下命令来安装:
sudo apt-get install g++
附卸载命令,用于重装:
sudo apt-get remove g++
之后,重新编译即可,不返回任何值,说明编译成功
🍀 拷贝训练模型的文件
回到OpenKE目录(上级目录),拷贝examples文件夹中的文件到同级目录下(这里使用TransE算法、FB15K237数据集)
cd ../
cd examples/train_transe_FB15K237.py ./
移动后,文件如下图所示
🍀 创建 checkpoint 文件夹
后边训练模型会用到
mkdir checkpoint
ls
🍀 训练 TransE 模型
python train_transe_FB15K237.py
不能进行训练,出现了各种问题,如下文所示
三、可能出现的问题的解决方法及踩坑实录
🍀 conda 报错不能使用
使用下列命令更新:
bash Anaconda3-5.3.1-Linux-x86_64.sh -u
恢复正常
🍀 提示不存在 torch 模块
这次使用下边这条命令更新,不用官网的命令,太慢了:
pip install torch -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安装 torch 成功,运行,再次报错,没有 Nvidia 驱动 , 其实是深度学习环境没有配好
RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx
遇到新问题如下,解决完再说
🍀 磁盘空间大小不足,显示剩余 0
我又扩展了20 G的空间,然后分区,通过软件 gparted(安装如下):
打开:
将 sda2 拉到最大:
将 sda5(挂载到根目录下)拉到最大,扩大根目录的容量:
🍀 踩坑:VM 中 Ubuntu 的 Nvidia 驱动
先添加源:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
检查可以安装的驱动版本:我的没有提示和推荐
然后我查了官网,自己的电脑应该装哪个版本的驱动,按照下边这条命令安装:
sudo apt install nvidia-driver-510
显示成功安装
🍀 CUDA 安装
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
sudo sh cuda_11.6.0_510.39.01_linux.run
输入accept后,空格取消选中第一个,cuda安装包是自带显卡驱动的,所以这一步按空格去掉安装显卡驱动的选项:
下选install,点击后回车:
安装成功。如果失败,可能是之前的没有卸干净,如有卸载需求,参考此博客:
环境变量配置好,便可以用nvcc -V
查看cuda信息了
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
如下图所示,证明cuda安装成功,同时图中显示驱动确实也在
但是nvidia-smi
出现问题:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
看网上说原因是,系统内核升级了,导致新版本内核和原来显卡驱动不匹配,我参考这篇文章的方法尝试解决
也快把全网的方法都试了,不能成功,我以为是自己的操作问题
后来才发现,虚拟机中英伟达驱动不支持,看到这里,如果不是虚拟机中安装ubuntu系统,本文可以继续看下去,否则希望停止踩坑
踩坑结束,驱动不能用,那就没必要再进行安装深度学习环境(Pytorch+GPU)了,希望大家引以为戒,避开虚拟机这个坑,老老实实装Windows+Linux双系统环境吧,使用OpenKE进行模型的训练,将不久配好环境后进行更新,感谢大家的持续关注…
附录
🍀 Windows下 git 的配置及与 github 的连接
win+R:cmd
确认自己已安装:git --version
git config --global user.name "zax"
git config --global user.email "zaxuestc2021@qq.com"
git config -l
打开git bash:
确认一下:
开始配置:
最终结果:
说明:如果使用 Git Bash 克隆,用 ls、cd、pwd三个命令可查看克隆项目的所在目录