zoukankan      html  css  js  c++  java
  • 后端程序员之路 9、一个推荐系统的打分过程

    1、blocking_queue_t
    一个队列的封装,用于feature_logger_t和predict_manager_t

    2、feature_logger_t
    用于异步将用户特征、内容特征、以及内容得分写到日志

    3、content_feature_redis_cluster_t
    用于维护一个redis_cluster的单例

    4、predictor_t
    由predictor_manager_t维护,根据配置文件加载一系列predictor_t
    p_model对应到一个GbdtModel
    p_db对应到一个kv数据库

    5、predict_manager_t
    doc_result_t,文章评分结果,含score、gbdt_score、gbdt_features
    task_tracker_t,用于跟踪一次打分任务是否已完成
    predict_doc_t,要打分的文章,含p_features、p_predictor
    predict_task_t,一个打分任务,含tracker、p_predictor、p_user_features、docs,在任务完成时,通过tracker通知等待者
    predict_manager_t,根据配置文件开启一堆线程来完成打分任务

    6、predict_manager_t::_predict_worker_func 打分过程
        1. feature-extract
            1.1 feature data
            1.2 gen static , fill cfb key dictionary
            1.3 store
        2. batch get cfb
        3. add cfb features which in dictionary
        4. gbdt model predict

    7、_model_predict
        1. score the doc
        2. age decay

    8、scoring_t 基于Thrift对外提供打分服务
        1. get content profiles
        2. copy predictor for per request param override
        3. parse user features and generate user gbdt features
        4. init task tacker & lock 
        5. init task
        6. add to working queue 
        7. unlock、wait & get result 
        8. acquire lock again to make sure all predict thread finished before tracker deletion

  • 相关阅读:
    Confluence 6 在升级过程中查看合并日志
    Confluence 6 从 WIKI 标记整合到基于 XHTML 的存储格式
    Confluence 6 升级完成后的检查
    Confluence 6 超过当前许可证期限进行升级
    HDU2571--命运---DP
    HDU 2084 DP经典例子---数塔问题
    紫书第二章
    求组合数
    欧拉函数
    二分幂/快速幂
  • 原文地址:https://www.cnblogs.com/zapline/p/6523920.html
Copyright © 2011-2022 走看看