三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

2023入门LightCTR指南:从安装到训练FM模型的完整步骤

2023入门LightCTR指南:从安装到训练FM模型的完整步骤

2023入门LightCTR指南:从安装到训练FM模型的完整步骤

【免费下载链接】LightCTRLightweight and Scalable framework that combines mainstream algorithms of Click-Through-Rate prediction based computational DAG, philosophy of Parameter Server and Ring-AllReduce collective communication.项目地址: https://gitcode.com/gh_mirrors/li/LightCTR

LightCTR是一个轻量级且可扩展的点击率预测框架,它结合了基于计算DAG的主流点击率预测算法、参数服务器理念和Ring-AllReduce集体通信技术,非常适合处理稀疏数据和大规模分布式模型训练。本指南将帮助新手用户快速掌握LightCTR的安装和FM模型训练流程。

LightCTR框架简介 🚀

LightCTR具有以下核心特性:

  • 基于参数服务器和Ring-AllReduce集体通信的分布式训练
  • 自动梯度计算的有向无环图(DAG)
  • 梯度裁剪、 stale同步并行(SSP)和带延迟补偿的异步SGD
  • 半精度和量化(PQ或Int8)压缩神经网络
  • 共享内存中DHT存储的共享参数键值对
  • 无锁多线程训练和SIMD操作
  • Mini-Batch GD、Adagrad、FTRL、Adam等优化器实现

支持的算法包括Factorization Machine (FM)、Field-aware Factorization Machine (FFM)、Neural Factorization Machine (NFM)等主流点击率预测模型。

安装LightCTR的准备工作

环境要求

  • C++11编译器
  • ZeroMQ库(项目已包含在third/zeromq目录中)

获取源代码

git clone https://gitcode.com/gh_mirrors/li/LightCTR cd LightCTR

编译LightCTR框架 ⚙️

LightCTR提供了两种主要的编译方式,可以根据需要选择:

单机模式编译

make

分布式Ring-AllReduce模式编译

./build_ring.sh

编译完成后,将生成可执行文件,用于后续的模型训练。

配置FM模型训练参数

LightCTR的配置非常简单,只需修改主程序文件中的参数:

  1. 打开配置文件:
vim main.cpp
  1. 设置FM模型相关参数:
    • 学习率(Learning Rate)
    • 数据来源(Data source)
    • 特征维度(Feature dimensions)
    • 迭代次数(Number of iterations)
    • 其他超参数

准备训练数据 📊

LightCTR支持多种格式的输入数据,项目中提供了示例数据文件:

  • data/train_sparse.csv:稀疏特征训练数据
  • data/train_dense.csv:稠密特征训练数据
  • data/test_sparse.csv:稀疏特征测试数据

如果需要处理自己的数据,可以使用提供的数据处理脚本:

  • data/proc_file_split.py:文件分割工具
  • data/proc_text_topic.py:文本主题处理工具

训练FM模型的完整步骤

单机模式训练

./LightCTR_BIN

分布式模式训练

  1. 启动主节点:
./LightCTR_BIN_Master
  1. 启动参数服务器:
./LightCTR_BIN_PS
  1. 启动工作节点:
./LightCTR_BIN_Worker

LightCTR性能优势展示

LightCTR在性能上相比传统框架有显著优势,以下是一些关键的性能对比:

LightCTR与LibFM性能对比

上图展示了在不同交互维度下,LightCTR与LibFM训练1000个epochs的时间成本对比。可以看出,随着维度增加,LightCTR的性能优势更加明显,在64维时LightCTR仅需29.94秒,而LibFM需要453.84秒。

LightCTR与LibFFM性能对比

在Field-aware Factorization Machine的实现上,LightCTR同样表现出色。当交互维度为16时,LightCTR训练100个epochs仅需114.82秒,而LibFFM需要216秒。

LightCTR与TensorFlow(CPU)性能对比

即使与TensorFlow在CPU上的表现相比,LightCTR也具有明显的速度优势。当批处理大小为400时,LightCTR训练5000个epochs仅需202.23秒,而TensorFlow需要281.76秒。

分布式训练扩展性

LightCTR的分布式训练支持Ring-AllReduce模式,上图显示了1节点和4节点配置下的损失和准确率曲线。可以看出,4节点配置在保持相似准确率的同时,显著加快了训练速度。

总结与下一步学习

通过本指南,你已经掌握了LightCTR的安装和FM模型训练的基本步骤。LightCTR的轻量级设计和高效性能使其成为点击率预测任务的理想选择。

下一步,你可以探索:

  • 尝试其他算法如FFM、NFM:train/
  • 深入了解分布式训练机制:distribut/
  • 探索模型评估工具:util/evaluator.h

LightCTR是一个持续发展的开源项目,欢迎通过贡献代码、创建issue或pull request来参与项目发展。

【免费下载链接】LightCTRLightweight and Scalable framework that combines mainstream algorithms of Click-Through-Rate prediction based computational DAG, philosophy of Parameter Server and Ring-AllReduce collective communication.项目地址: https://gitcode.com/gh_mirrors/li/LightCTR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表