如何从源码编译ray1.0.0(分布式系统框架)?
ray1.0.0的官方文档:https://docs.ray.io/en/latest/development.html#id2
我是按照官方文档中的Building Ray(full)这部分进行编译安装的,记录了一下如何从源码编译ray1.0.0(分布式系统框架)的过程以及期间遇到的问题和解决方案。
1. 安装wsl
使用wsl,用的是Ubuntu20.04LST(自带python3.8.2),之前用过Ubuntu18.04LST(python3.6.9),注意我这里的wsl要用mobaxterm这个软件打开。wsl-Ubuntu默认的apt源是国外的源,国内访问速度会很慢,所以要注意更换apt源为阿里源,使用以下命令:
1 2 3 4 5 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's/security.ubuntu/mirrors.aliyun/g' /etc/apt/sources.list sudo sed -i 's/archive.ubuntu/mirrors.aliyun/g' /etc/apt/sources.list sudo apt update sudo apt-get upgrade //更新已安装的包到最新,这个是可选的 |
2.安装pip3
因为Ubuntu20.04LST虽然带了python3.8,但是没有pip,无法安装一些东西,于是要安装pip3。
法一:这里我是直接安装anaconda3(包括了pip3),按照这篇博客安装anaconda3:https://blog.csdn.net/weixin_44776894/article/details/106159483。
输入以下命令检查是否安装成功,若出现anaconda,则成功:
1 | python3 |
法二:执行以下命令只安装pip3
1 2 | sudo apt-get update sudo apt-get install python3-pip |
输入以下命令检查是否安装成功:
1 | pip3 -V |
3.根据文档中的内容安装依赖
1 2 3 | sudo apt-get update sudo apt-get install -y build-essential curl unzip psmisc pip install cython==0.29.0 pytest |
最后一步如果我前面代理设置不对的话会报错:ERROR: Could not install packages due to an EnvironmentError: Missing depend,就执行以下命令清除代理就好了:
1 | unset all_proxy && unset ALL_PROXY |
4.安装ray
-
从github上下载ray的源码
git clone https://github.com/ray-project/ray.git -
Install Bazel
有两种方法,第一种是官方文档的使用ray脚本安装,不过我试过很慢,不推荐。第二种是使用二进制安装程序方式安装,因为ray中脚本安装的Bazel为3.2.0版本所以此处也选择3.2.0版本。
法一:在wsl中cd进入到ray/ci/travis这个文件中,ray是你下好的源码的文件夹,然后运行install-bazel.sh文件,如果直接使用sh运行会报错,因为ubuntu的 shell 默认安装的是 dash,而不是 bash,需要使用以下命令,选择“No”,将dash切换回bash。
1 | sudo dpkg-reconfigure dash |
再使用以下命令运行install-bazel.sh文件。
1 | sudo sh install-bazel.sh |
法二:使用以下命令安装相关依赖
1 | sudo apt install g++ unzip zip |
下载bazel-3.2.0-installer-linux-x86_64.sh安装脚本,接着进入到安装的目录下,执行以下命令,即可成功:
1 2 3 4 | # 修改权限 chmod +x bazel-3.2.0-installer-linux-x86_64.sh # 执行安装脚本 ./bazel-3.2.0-installer-linux-x86_64.sh --user |
- Build the dashboard (需要用到 Node.js,官网 https://nodejs.org/).
1 2 3 4 5 6 7 | #先cd进入到ray所在的目录,然后执行,下面第一行命令适用于ray(master), #若是ray1.0.0,则需要改为pushd ray/python/ray/dashboard/client pushd ray/dashboard/client #这一步之前如果没有安装npm的话会报错,按照提示进行安装即可 npm install sudo npm run build popd |
- Install Ray
1 2 | cd ray/python pip install -e . --verbose # Add --user if you see a permission denied error. |
执行最后一步pip install -e . --verbose的时候报错:
报错原因:这是因为要从github上下载东西,网不稳定的话会出错,我试了好多次都不行。
解决方案:问过别人才发现需要使用代理,不过我的代理也没设置成功(太惨了,如果有哪位好心大佬能给我分享一篇新手挂代理的详细教程就好了,最好有那种免费的代理,谢谢)。按理来说,挂代理再执行这条命令是可以成功的,你们可以试试。我最后的解决方法是在实验室的服务器上跑的,在那里面编译ray,因为里面的这些库已经下好了,就这样解决了。