6

易用又强大的伯乐二期来啦!

 3 years ago
source link: https://zhuanlan.zhihu.com/p/344617178
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

导读

RecBole 你用了吗?是否通过它体验到了轻松复现推荐模型的爽快?是否通过它快速入门推荐系统?是否因为它而跳过了数据处理的纷繁复杂?

易用又强大的推荐算法框架伯乐发布二期啦!

什么?你还不知道 RecBole 是啥?快点击下方链接了解一下吧~

RfAjmyQ.jpg!mobile

伯乐:一个易用、强大的PyTorch推荐系统开源库

历时两个月的继续开发、代码重构、bug修复以及社区维护,在开发人员和海内外众多开发者的共同努力下,今天 RecBole 二期终于来啦!

话不多说,直接来看看我们的的更新亮点、新特性以及社区维护工作吧!

更新亮点

1. 速度及效率优化

我们针对不同方面进行了速度和效率上的优化,具体如下:

rm6Vvu3.jpg!mobile

*例:数据方面优化前后速度对比如图:

nmyqqam.jpg!mobile

2. 添加12个新模型

在原有 53 个模型的基础上又添加了 12 个新的模型:

  • 4 个支持 基于AE 的General类模型: CDAE , MacridVAE , MultiVAE , MultiDAE.
  • 6 个Sequential类模型: RepeatNet , Fossil , HGN , SHAN , NPE , HRM.
  • 1 个图嵌入方法模型: LINE.
  • 1 个外部算法库模型: XGBoost ,支持其 数据接口训练接口 ,以及相应 预测评估 功能。

模型更加多样化,可以更好地满足用户对模型的需求。

3. 支持Context-aware推荐模型的排序评测方法

在一期中Context-aware模型并不支持排序评测,评测一般使用CTR方法和相应指标——AUC和LogLoss,在二期中我们使其支持了排序评测和相应的评测指标,例如MRR、NDCG等。

4. 添加Case study功能

为了方便用户分析模型的结果,我们添加了Case study功能。该功能使得用户可以针对特定的user id,方便地获取其对各商品的打分,以及给出topk的商品推荐。

*例如,训练好模型之后,以下接口通过给定一个user id序列、模型和测试集,可以得到模型在测试集上对这些用户关于所有商品的打分。

score = full_sort_scores(uid_series, model, test_data)

5. 添加CI (Continuous Integration)模块

我们将CI (Continuous Integration,持续集成)添加到RecBole中,提高了开发的效率和质量。

aiAfmeF.jpg!mobile

新特性添加

1. 参数更新

  • benchmark_filename

为了支持读取提前划分好的数据,我们添加了该参数。用户可以通过设置配置文件或命令行使用该功能,例如在配置文件中写入:

benchmark_filename: [pre-split dataset name]
  • unused_col

该参数用来指令会在数据与处理中用到但不会在模型中用到的数据列。此外,我们删除了 drop_filter_fieldrop_preload_weight 两个参数。用户可以在配置文件中写入:

unused_col:
  inter: [timestamp]

表示在数据预处理时会用到 timestamp 这一列,但在模型中不会用到。在GRU4Rec模型实验过程中,使用这一参数能将训练速度提升近 40%

  • training_neg_sample_distribution

该参数用来选择训练时的负采样策略

  • loss_decimal_place and metric_decimal_place

该参数用于损失和计量结果控制小数点

2. 添加时间条功能

为了方便用户观察训练和评测的进度,我们添加了时间条功能。

JBRfAbE.png!mobile

此外,我们对data部分和evaluation部分的代码进行了重构,提升了框架运行速率,也提高了代码的可读性和可复用性;并修复了部分模型和框架中的bug。更加全面的二期工作如下图:

IRBRnqu.jpg!mobile

如果你想进一步了解,请移步下方链接:

https:// github.com/RUCAIBox/Rec Bole/releases/tag/v0.2.0

数据集

为了支持这个工具包的使用,我们收集整理了 28 个数据集合(提供本地拷贝),详细请见: https:// github.com/RUCAIBox/Rec SysDatasets ,欢迎大家使用哦~

社区维护

RecBole 一期上线至今仅两个多月的时间里,项目已获得了 688 个star,众多热心用户积极使用,并给出了很好的反馈。我们在GitHub上收到了共计 63 个issue,社区非常活跃。

bua2yyr.jpg!mobile

我们也一直尽力为大家解决问题,持续做出信息回复和代码调整。

qqE3Azy.jpg!mobile

下面简单列举几条有代表性的issue,感兴趣的小伙伴可以去我们的GitHub页面( https:// github.com/RUCAIBox/Rec Bole )查看更多信息哦~

Q1

框架里的batch_size的具体定义是什么?为什么运行的时候会收到警告信息呢?

在RecBole的dataloader中, batch_size 的意义是 一个batch中交互记录数目的上界 。一方面, 这样的定义更容易计算和控制GPU显存的使用 。例如,在比较不同数据集的时候,你不必改变batch_size的值,因为GPU显存的使用不会改变太多;另一方面, 在top-k评测时,我们规定一个user的所有记录都分在一个batch中 。为了使所有user都满足这个条件,因此可能会尝试把更多的交互记录放入一个batch里,但是由于batch_size只是一个上限,框架会调用 _batch_size_adaptation() 来动态调整batch size,当 batch_size 需要调整变大的时候,框架会输出一条警告信息。

Q2

框架是否支持将数据划分设置成只有train和test两个部分?

可以通过参数 benchmark_filename 来设置读取提前做好数据划分的数据集。例如将其设置成:

benchmark_filename: ['part1', 'part2', 'part3']

假设原数据集名称为my_data(即config['dataset']= 'my_data'),则我们会从以下三个文件读取数据:

my_data.part1.inter(train数据)

my_data.part2.inter(valid数据)

my_data.part3.inter(test数据)

如果valid部分数据不存在,用户可以在my_data.part2.inter的第一行写入描述数据的信息,不用填入数据。这样一来,训练数据就会从part1中读取,测试数据就会从part3中读取。

除了issue之外,我们还开放了discussion板块,在这里,你可以提出使用方面的问题,可以发表自己的使用感受和体验,还可以为 RecBole 接下来的发展建言献策,例如提出你想加入的模型等。总之,这是一个自由而欢快的地方,我们真心希望可以与大家一同交流进步。欢迎大家积极参与讨论!(不限中英文哦!)

eYbI7r7.jpg!mobile

最后,为了方便中文用户的使用,我们还在CSDN上发布了小白入门系列的博客,对大家快速上手我们的框架很有帮助,如图:

VvqANfR.jpg!mobile

欢迎有需要的朋友来看~链接指路:

https:// blog.csdn.net/Turinger_ 2000/article/details/111182852

我们衷心感谢所有向我们提出问题,指明发展方向和提供发展建议的朋友们, RecBole 的蓬勃发展离不开每个用户的支持,希望 RecBole 可以在大家的帮助和敦促下越做越好。

以上就是 RecBole 二期的主要更新内容啦!

还在等什么呢?马上安装 RecBole 框架,体验一下船新版本吧!

"伯乐"推荐系统库将承诺持续开发维护,保持版本稳定,同时不断规划更多实用、强大的功能。

最后,我们郑重感谢下列GitHub开发者,他们或是我们提出了非常深刻有用的建议,或是向我们的项目提交了很棒的代码,为 RecBole 的成长做出了很大贡献。他们是: @tszumowski, @rowedenny, @deklanw

我们仍将继续公开招募开发团队成员,从贡献单一代码到核心模块的开发,都欢迎大家的加入。欢迎小伙伴们联系[email protected]加入我们~

有好的建议或意见也欢迎关注(点击右边链接关注:arrow_right:) AI Box 公众号后台留言或者在Github的issues中提问。

Reference

[1]Wayne Xin Zhao, Shanlei Mu, Yupeng Hou, Zihan Lin, Kaiyuan Li, Yushuo Chen,Yujie Lu, Hui Wang, Changxin Tian, Xingyu Pan, Yingqian Min, Zhichao Feng,Xinyan Fan, Xu Chen, Pengfei Wang, Wendi Ji, Yaliang Li, Xiaoling Wang, andJi-Rong Wen. 2020. RecBole: Towards a Unified, Comprehensive and Efficient Framework for Recommendation Algorithms. arXiv preprint arXiv:2011.01731(2020).

更多开源工具推荐

qiqYNbV.jpg!mobileQZZBnam.jpg!mobile CRSLab:可能是最适合你的对话推荐系统开源库 CRSLab:可能是最适合你的对话推荐系统开源库 mp.weixin.qq.com eqUzueJ.jpg!mobilebE7fMrV.jpg!mobile "妙笔"生花:一个易用、高效的文本生成开源库 "妙笔"生花:一个易用、高效的文本生成开源库 mp.weixin.qq.com RRb2aeb.jpg!mobileU3qyeya.jpg!mobile 伯乐:一个易用、强大的PyTorch推荐系统开源库

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK