如何从源码编译ray1.0.0(分布式系统框架)?


如何从源码编译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

  1. 从github上下载ray的源码
    git clone https://github.com/ray-project/ray.git

  2. 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
  1. 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
  1. 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,因为里面的这些库已经下好了,就这样解决了。