README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

简介
DeepRec 是一个基于 TensorFlow 1.15、Intel-TensorFlow 和 NVIDIA-TensorFlow 的高性能推荐深度学习框架。它托管于 LF AI & Data Foundation 的孵化项目中。
背景
推荐模型在零售、媒体、广告、社交网络和搜索引擎等领域具有巨大的商业价值。与其他类型的模型不同,推荐模型包含大量非数值特征,例如 id、标签、文本等,这导致了巨大的参数量。
DeepRec 自 2016 年开始开发,支持淘宝搜索、推荐和广告等核心业务。它在基础框架上沉淀了一系列特性,并在推荐模型的训练和推理方面表现出色。迄今为止,除了阿里巴巴集团外,数十家公司已在业务场景中使用了 DeepRec。
主要特性
DeepRec 具备超大规模分布式训练能力,支持万亿级样本和超过十万亿参数的推荐模型训练。针对推荐模型,已在 CPU 和 GPU 平台上进行了深入的性能优化。它包含一系列特性,以提升超大规模场景下的可用性和性能。
Embedding & Optimizer
- Embedding Variable.
- Dynamic Dimension Embedding Variable.
- Adaptive Embedding Variable.
- Multiple Hash Embedding Variable.
- Multi-tier Hybrid Embedding Storage.
- Group Embedding.
- AdamAsync Optimizer.
- AdagradDecay Optimizer.
Training
- 异步分布式训练框架(Parameter Server),例如 grpc+seastar、FuseRecv、StarServer 等。
- 同步分布式训练框架(Collective),例如 HybridBackend、Sparse Operation Kits (SOK) 等。
- 运行时优化,例如 Graph Aware Memory Allocator (GAMMA)、基于关键路径的 Executor 等。
- 运行时优化(GPU),支持多个 CUDA compute stream 和 CUDA Graph 的 GPU Multi-Stream Engine。
- 算子级优化,例如 BF16 混合精度优化、embedding 算子优化以及 PMEM 和 GPU 上的 EmbeddingVariable、新硬件特性启用等。
- 图级优化,例如 AutoGraphFusion、SmartStage、AutoPipeline、Graph Template Engine、Sample-awared Graph Compression、MicroBatch 等。
- 编译优化,支持 BladeDISC、XLA 等。
部署与服务
- Delta 检查点加载与导出。
- 超大规模推荐模型分布式服务。
- 支持多级混合存储和多后端。
- 低延迟在线深度学习。
- 高性能推理框架 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 Serving | |
| Linux GPU Serving |
官方单元测试
| 单元测试类型 | 状态 |
|---|---|
| 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/
联系我们
加入钉钉官方讨论群
加入微信官方讨论组