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

DeepRec Logo


简介

DeepRec 是一个基于 TensorFlow 1.15Intel-TensorFlowNVIDIA-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 CPUCPU Build
Linux GPUGPU Build
Linux CPU ServingCPU Serving Build
Linux GPU ServingGPU Serving Build

官方单元测试

单元测试类型状态
Linux CPU CCPU C Unit Tests
Linux CPU CCCPU CC Unit Tests
Linux CPU ContribCPU Contrib Unit Tests
Linux CPU CoreCPU Core Unit Tests
Linux CPU ExamplesCPU Examples Unit Tests
Linux CPU JavaCPU Java Unit Tests
Linux CPU JSCPU JS Unit Tests
Linux CPU PythonCPU Python Unit Tests
Linux CPU Stream ExecutorCPU Stream Executor Unit Tests
Linux GPU CGPU C Unit Tests
Linux GPU CCGPU CC Unit Tests
Linux GPU ContribGPU Contrib Unit Tests
Linux GPU CoreGPU Core Unit Tests
Linux GPU ExamplesGPU Examples Unit Tests
Linux GPU JavaGPU Java Unit Tests
Linux GPU JSGPU JS Unit Tests
Linux GPU PythonGPU Python Unit Tests
Linux GPU Stream ExecutorGPU Stream Executor Unit Tests
Linux CPU Serving UTCPU Serving Unit Tests
Linux GPU Serving UTGPU Serving Unit Tests

用户文档

中文: https://deeprec.readthedocs.io/zh/latest/

英文: https://deeprec.readthedocs.io/en/latest/

联系我们

加入钉钉官方讨论群

加入微信官方讨论组

许可证

Apache License 2.0