想要运行测试下Facebook的一个有关联邦学习的工作FOLtR-ES(Kharitonov E. Federated Online Learning to Rank with Evolution Strategies[C]//Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining. ACM, 2019: 249-257. 开源代码:https://github.com/facebookresearch/foltr-es)
里面使用了anaconda和Jupyter notebooks,故尝试在ubuntu16.04环境下搭建anaconda环境进行测试。
操作系统:Ubuntu 16.04.4 LTS
anaconda版本:Anaconda3-2019.07-Linux-x86_64
PyTorch版本:python3.6 cpuonly,无CUDA
由于在测试过程中,把anaconda搞炸了,所有的conda命令都无法运行,所有决定卸载重新再来。
rm -rf anaconda3
gedit ~/.bashrc
注释掉或安装时添加的Anaconda3路径
# export PATH=/home/hnli/anaconda3/bin:$PATH
也可能是在安装时选择给你添加的环境变量,并会给你留有一个.bashrc的备份文件.bashrc-anaconda3.bak,可以根据备份文件恢复,或者直接删除或注释掉安装时给你添加的环境变量代码(图上这部分)。
保存,输入命令生效
source ~/.bashrc
可从anaconda官网https://www.anaconda.com/distribution/#download-section下载最新的版本,目前为Anaconda 2019.07版本,可选Python 3.7 version或Python 2.7 version。但官网下载速度很慢。
也可从清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/上下载anaconda3镜像,速度快,再找最新镜像的时候,可以先按日期排序,默认排序不是按照更新日期来的。注:清华大学开源站的anaconda镜像服务曾关闭,于2019年7月21日又恢复了。
之前我采用的是Anaconda3-5.3.1版本,这次尝试下最新的2019.07版本,故下载了Anaconda3-2019.07-Linux-x86_64.sh
输入安装命令
bash Anaconda3-2019.07-Linux-x86_64.sh
根据提示信息输入完成安装,包括注册信息和安装位置,都选择了默认设置。
5.3.1版本安装完成后会询问你是否添加环境变量,输入yes,会在~./bashrc中添加环境变量并保存一个备份文件.bashrc-anaconda3.bak。
5.3.1版本会最后询问你是否安装VScode,选择no,不安装。
2019.07版本安装时则不会提示你是否安装VSCode,且在~./bashrc中添加环境变量后也没有保存一个备份文件。
安装完成,关闭终端。
安装好anaconda3-2019-07后,打开终端,会发现自动进入了anaconda的base环境,命令行前端有(base)标识,意味着在anaconda的base环境下,可以输入命令将该设置关闭。
conda config --set auto_activate_base false
这样重新打开终端,就不会自动进入base环境下。
查看conda版本,出现conda 4.7.10
conda --version
创建新环境
conda create --name <env_name> <package_names>
例如创建一个名为test的新环境,python版本为3.6
conda create -n test python=3.6
激活test环境
conda activate test
退出test环境
conda deactivate
查看已创建的环境信息
conda info --envs
复制环境
conda create --name <new_env_name> --clone <copied_env_name>
删除test环境
conda remove --name test --all
获取当前环境中已安装的包信息
conda list
更新所有包
conda update --all
启动图形化界面anaconda-navigator
anaconda-navigator
由于下载速度的问题,可以考虑更换成清华大学或者中科大的镜像源,当然会有挂掉的风险,之前就曾暂停了anaconda镜像源服务,直到2019年7月21日才恢复。可参考清华大学镜像源的Anaconda 镜像使用帮助https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/。
也可以输入以下命令添加源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --set show_channel_urls yes
打开主目录下的.condarc文件查看配置,可以将defaults一行删除。也可以按照清华镜像源使用说明来修改该文件。
gedit ~/.condarc
conda config --show
测试
conda create -n myenv numpy
可下载安装packages,且后面出现清华的url就可以了。
接下来运行测试下Facebook的一个有关联邦学习的工作FOLtR-ES(Kharitonov E. Federated Online Learning to Rank with Evolution Strategies[C]//Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining. ACM, 2019: 249-257. 开源代码:https://github.com/facebookresearch/foltr-es)
PyTorch官网(https://pytorch.org/)上可查看不同版本的安装命令,由于测试电脑上没有GPU,FOLtR-ES中用的是python3.6,因此这里选择python3.6无CUDA版本的pytorch。
在终端输入命令,这里我直接先在base环境下安装
conda install pytorch torchvision cpuonly -c pytorch
可能会遇到HTTP error问题,重新输入命令安装就行。
安装好后进入python测试下
python
import torch
没有报错就行了。
conda create --name foltr-es python=3.6
conda activate foltr-es
git clone https://github.com/facebookresearch/foltr-es.git && cd foltr-es
pip install -r requirements.txt
这里readme的说明是使用pip安装,不是使用conda安装,我也就用pip安装了,不确定是否会有问题,在后续跑测试代码pytest的时候是没有问题的。
使用conda安装依赖的命令为
conda install --yes --file requirements.txt
需要用到数据集MQ2007 和MQ2008,该数据集来自于microsoft的研究LETOR:https://www.microsoft.com/en-us/research/project/letor-learning-rank-information-retrieval/
选择LETOR4.0,可以找到数据介绍和下载链接,下载链接实际上是onedrive云盘,需要下载,还贼慢。
将下载好的MQ2007 和MQ2008文件解压出来放到data目录下,然后运行测试,所有的测试都pass即可。
pytest -v
运行eps_estimate.py代码可以得到paper中的table 2结果:
python eps_estimate.py
运行notebooks目录下的antithetic.ipynb、n_interactions.ipynb、privacy robustness.ipynb代码,按readme所提示,需要在root下使用Jupyter notebook。
退出foltr-es环境,然后在base环境下启动anaconda-navigator,在root环境下打开Jupyter notebook。
也可以在base环境下,直接输入命令打开jupyter notebook。
jupyter notebook
在打开的浏览器窗口中打开代码所在目录,打开代码文件运行。
为了避免代码运行中的路径问题,我简单粗暴地将代码中的*cd …*改为绝对路径。
在运行过程中没法判断一个cell是不是已经结束了,运行时间短的cell很快就能及时显示结果,但有的cell的运行时间较长,过了很久也没出现结果,也没报错,点运行又能够继续跳到下一个cell。大概可以根据浏览器窗口标签的状态来判断cell是否运行中,运行状态的应该是一个沙漏标志。
基本过程久这样了,这次比之前那次顺利,之前出现的各种问题这次都没有遇到,不知道是不是因为换了2019-07版本的原因。我的小破旧笔记本感觉真的带不动机器学习代码,跑半天没跑出结果,动不动还死机,真滴难。