简介
DeepRec是一个基于TensorFlow 1.15、Intel-TensorFlow和NVIDIA-TensorFlow的高性能推荐深度学习框架。它目前在LF AI & Data Foundation孵化。
背景
推荐模型在零售、媒体、广告、社交网络和搜索引擎等领域具有巨大的商业价值。与其他类型的模型不同,推荐模型具有大量非数值特征,如ID、标签、文本等,这导致了庞大的参数量。
DeepRec自2016年开始开发,支持淘宝搜索、推荐和广告等核心业务。它在基础框架上沉淀了一系列功能,在推荐模型训练和推理方面表现卓越。到目前为止,除了阿里巴巴集团,已有数十家公司在其业务场景中使用DeepRec。
主要特性
DeepRec具有超大规模分布式训练能力,支持万亿样本和超过十万亿参数的推荐模型训练。对于推荐模型,在CPU和GPU平台上进行了深入的性能优化。它包含一系列功能,以提高超大规模场景的可用性和性能。
嵌入与优化器
- 嵌入变量
- 动态维度嵌入变量
- 自适应嵌入变量
- 多哈希嵌入变量
- 多级混合嵌入存储
- 分组嵌入
- AdamAsync优化器
- AdagradDecay优化器
训练
- 异步分布式训练框架(参数服务器),如grpc+seastar、FuseRecv、StarServer等
- 同步分布式训练框架(集合通信),如HybridBackend、Sparse Operation Kits (SOK)等
- 运行时优化,如图感知内存分配器(GAMMA)、基于关键路径的执行器等
- 运行时优化(GPU),支持多CUDA计算流和CUDA Graph的GPU多流引擎
- 算子级优化,如BF16混合精度优化、嵌入算子优化、PMEM和GPU上的EmbeddingVariable、新硬件特性启用等
- 图级优化,如AutoGraphFusion、SmartStage、AutoPipeline、图模板引擎、样本感知图压缩、MicroBatch等
- 编译优化,支持BladeDISC、XLA等
部署与服务
- 增量检查点加载和导出
- 超大规模推荐模型分布式服务
- 支持多级混合存储和多后端
- 低延迟在线深度学习
- 高性能推理框架SessionGroup(无共享),支持多线程池和多CUDA流
- 模型量化
安装
安装准备
CPU平台
alideeprec/deeprec-build:deeprec-dev-cpu-py38-ubuntu20.04
GPU平台
alideeprec/deeprec-build:deeprec-dev-gpu-py38-cu116-ubuntu20.04
如何构建
配置
$ ./configure
默认编译CPU和GPU版本
$ bazel build -c opt --config=opt //tensorflow/tools/pip_package:build_pip_package
编译CPU和GPU版本:ABI=0
$ bazel build --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --host_cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" -c opt --config=opt //tensorflow/tools/pip_package:build_pip_package
CPU优化编译:oneDNN + 统一Eigen线程池
$ bazel build -c opt --config=opt --config=mkl_threadpool //tensorflow/tools/pip_package:build_pip_package
CPU优化编译并设置ABI=0
$ bazel build --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --host_cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" -c opt --config=opt --config=mkl_threadpool //tensorflow/tools/pip_package:build_pip_package
创建whl包
$ ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
安装whl包
$ pip3 install /tmp/tensorflow_pkg/tensorflow-1.15.5+${version}-cp38-cp38m-linux_x86_64.whl
最新发布镜像
CPU镜像
alideeprec/deeprec-release:deeprec2402-cpu-py38-ubuntu20.04
GPU CUDA11.6镜像
alideeprec/deeprec-release:deeprec2402-gpu-py38-cu116-ubuntu20.04
持续构建状态
官方构建
构建类型 | 状态 |
---|---|
Linux CPU | |
Linux GPU | |
Linux CPU服务 | |
Linux GPU服务 |
官方单元测试
单元测试类型 | 状态 |
---|---|
Linux CPU C | |
Linux CPU CC | |
Linux CPU Contrib | |
Linux CPU Core | |
Linux CPU Examples | |
Linux CPU Java | |
Linux CPU JS | |
Linux CPU Python | |
Linux CPU Stream Executor | |
Linux GPU C | |
Linux GPU CC | |
Linux GPU Contrib | |
Linux GPU Core | |
Linux GPU Examples | |
Linux GPU Java | |
Linux GPU JS | |
Linux GPU Python | |
Linux GPU Stream Executor | |
Linux CPU Serving UT | |
Linux GPU Serving UT |
用户文档
中文:https://deeprec.readthedocs.io/zh/latest/
英文:https://deeprec.readthedocs.io/en/latest/
联系我们
加入钉钉官方讨论群
加入微信官方讨论群