深度学习推荐系统实战-02-在colab pro上部署部署Sparrow RecSys

724 阅读5分钟

02 | Sparrow RecSys:我们要实现什么样的推荐系统?

我已经fork了wzhe06/SparrowRecSys: A Deep Learning Recommender System,所以就下载自己fork的仓库,colab给的虚拟机权限还是很大的,有sudo权限,体验和云主机差不多了。如果能把虚拟机的端口都映射到公网,那这个colab虚拟机的体验就和云主机没明显区别了,端口映射方法见之前的文章colab_通过frp映射ssh端口和其他业务端口

colab pro开发环境准备

ssh连入colab实例

因为colab虚拟机实例是通过启动一个notebook来启动的,所以你打开一个colab notebook你就拥有了一个虚拟机实例。然后安装sshd和frp,把22端口映射出来,然后就可以用vscode连接过去了。我把代码放到的了一个notebook,就用它来启动一个虚拟机了。

欢迎使用 Colaboratory.ipynb打开这个notebook,然后挂载谷歌网盘,然后在启动frpc,连接到腾讯云的frps服务,这样就能把colab实例的22端口映射到腾讯云frps服务器的公网端口,然后vscode就能登录了。

这个notebook不能关闭,如果开通了colab pro,那么只要notebook不关闭,这个虚拟机实例是可以保持1天的,关闭了虚拟机就释放了,然后frp进程自然也就消失了,重新打开则是另外一个colab实例了。

迁移~/.vscode-server文件夹

因为每次colab实例重启(runtime断开并不是虚拟机资源释放,知识notebook web端断开了)都相当于一个全新的电脑,里面之前安装的进程和数据都消失了,数据必须安装到自己的数据盘,也就是挂载的Google Drive。

然后vscode安装的插件都是安装在服务器端的,因为操作本质上是在服务器端操作的,然后通过网络显示到本地vscode,所以持久化已经安装的插件和配置,所以需要迁移配置文件路径。

参考visual studio code - How to change vscode-server directory - Stack Overflow


cp -r ~/.vscode-server /content/drive/MyDrive/git/ # 只要第一次这样搞

rm -rf ~/.vscode-server && ln -sf /content/drive/MyDrive/git/.vscode-server ~/.vscode-server # 在原位置创建一个软链接,每次用vscode连接之前现在web端的terminal里面执行这行

# lrwxrwxrwx 1 root root 41 Jun 26 07:04 .vscode-server -> /content/drive/MyDrive/git/.vscode-server

如果出现runtime断开然后vscode也断开连不上的错误,参考The VS Code Server failed to start 问题解决方案_zhangaicai的博客-CSDN博客

下载SparrowRecSys工程代码

git clone https://github.com/eatcosmos/SparrowRecSys.git

导入SparrowRecSys项目

用vscode单独打开SparrowRecSys目录,

学习vscode开发Java项目的配置方法

这个坑还是比较多的,一般都是因为某个插件没有安装导致的,基本插件安装完全都能找到那些配置的位置。

关于 VS Code for Java 的 Java 11 升级 - 知乎

需要安装的Java相关的插件,要安装全了才行哦:

用vscode的workspace管理项目,这样可以任意在workspace里增删项目文件夹:

参考Ubuntu18.04 安装Maven 3.5.3_Weison-CSDN博客_ubuntu安装maven,安装Maven到/usr/local/apache-maven-3.8.1/bin/mvn

cd /content/drive/MyDrive/git/.vscode-server/ && wget https://mirror.cogentco.com/pub/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz &&
cd /content/drive/MyDrive/git/.vscode-server/ && cp apache-maven-3.8.1-bin.tar.gz /usr/local/ && cd /usr/local/ && tar -zxvf apache-maven-3.8.1-bin.tar.gz && rm -rf apache-maven-3.8.1-bin.tar.gz &&
echo 'export M2_HOME=/usr/local/apache-maven-3.8.1' >> /etc/profile && echo 'export PATH=${M2_HOME}/bin:$PATH' >> /etc/profile && source /etc/profile && mvn -v

编译RecSysServer Maven工程

查下这是什么错误:

java - Maven build error - Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.5.5 - Stack Overflow参考这个把<artifactId>maven-assembly-plugin</artifactId>下面一行的版本号注释了,不知道是不是版本冲突问题,这个版本问题真的是大坑,不知道Maven版本对问题是否有影响

安装project需要的jdk 1.8

参考Installing Open JDK 8 on Debian or Ubuntu Systems | Installing the JDK

apt-get install openjdk-8-jdk

然后把1.8设置为project的jadk环境

运行RecSysServer

最后可以打开网页了。

小结

欢迎使用 Colaboratory.ipynb 初始化vscode开发环境

使用vscode连接到虚拟机实例,可能会出现连不上的情况,尝试:

  1. rm ~/.ssh/known_hosts
  2. 完整关闭vscode再重启
  3. 可能要手动在colab pro里执行那些初始化命令,在notebook里运行总是碰运气也不知道啥原因
  4. service ssh restart # 这个可能要手动重启下ssh
  5. vscode could not establish connection to linux The VS Code Server failed to start | 码农家园

链接上了,我们再打开之前的workspace,项目文件夹添加在workspace里面。

课程后面的留言帮助很大,因为看别人的问题能理解很多问题,可以发现实际的代码运行是有很多奇怪问题的,每个人遇到的都会不一样。

参考资料

changelog

  • 2021年06月28日 26号开始的,结果28号才完成,这个效率太低了
  • 2021年06月26日