新特性
- 添加控制台登录验证
新版本添加了控制台登录支持,登录状态会在主节点重启之后失效。
用户名和密码需要在配置文件中设定,如果两者都为空就会跳过登录验证过程。
dashboard_user_name = "admin" # dashboard user name
dashboard_password = "password" # dashboard password
- 点击率可视化界面支持多种反馈类型
在旧版本中,系统使用点击率衡量推荐系统线上效果,点击率为用户给出正反馈的次数除以阅读次数。在新版本中,系统计算每种正反馈的“点击率”,展示用户针对推荐结果给出每种正反馈的概率。
性能优化
- 使用AVX2指令加速向量计算
推荐算法中有大量的向量计算过程,可以使用CPU提供的SIMD指令一次对多个浮点数进行计算。大部分AMD64架构下的CPU会提供AVX2指令集,在实验中,AVX2指令将训练排序模型的时间从192秒降低为70秒。
AMD64架构下还有SSE、SSE2、AVX512等SIMD指令集,由于AVX2是目前支持最广泛并且性能最强的SIMD指令集,因此Gorse仅支持了AVX2。
- 使用Neon指令加速向量计算
ARM64架构下的SIMD指令集为NEON。在实验中,NEON将排序模型的训练时间从856秒降低到324秒(实验所用的ARM服务器性能较差,因此花费时间比较多)。
修复问题
- 修复了为未训练用户生成推荐结果的逻辑
在之前的版本中,工作节点从协同过滤模型中获取用户列表,这种方式会丢失协同过滤模型训练之后才插入的用户。在新版本中,工作节点直接匆匆数据库读取用户列表,能够为全部用户生成推荐。
- 自动创建日志文件所在目录
节点启动参数--log-path可以将日志输出到文件,如果日志文件目录不存在则会panic。新版本自动创建日志文件所在目录,如果没有权限操作才会panic。
- 修复了评估索引召回率时产生NaN值的问题
当所有精确查询的结果为空的时候,召回率计算得到NaN,在新版本中会返回0。
升级指南
- Redis: 由于存储忽略物品的数据结构发生了变化,需要清空原先的缓存。
redis-cli KEYS "ignore_items*" | xargs redis-cli DEL