总体来说,该版本只是一个移植的可行性和收益证明Demo,远不是DeepRec全功能的一个完整移植。
同时本项目也是 DeepRec的CPU版本优化大赛 的一个参赛方案,获得第4名(季军)。 由于比赛只启用了部分CPU上的DeepRec基本功能,所以由于开发成本原因也只考虑了基本功能,并主要针对CPU训练场景。
该Demo的目标:
- 证明:在保持TF 1.x的API不变的情况下,迁移到TF 2.x的codebase,享受 2.x 的社区更新是可能的。
- 确定除了DeepRec的主要功能性Feature外,目前基于1.15打磨的DeepRec codebase还有哪些明显优于TF 2.x master的修改点。
- 由于在参赛时DeepRec项目本身的GCC依赖版本较老,也计划在这方面确定移植到最新GCC的可能性。(该部分已经纳入到DeepRec的master)
结论:
- 是可行的,仅通过将TF的编译API改成1.x版本,并在TF 2.x上增加用户需要的原1.x的API就可以实现,且成本相对可控。
- TF 2.x的除了API外的全功能Feature正常,包括XLA。
- 移植到TF 2.x后,对于比赛评估的所有常见模型,平均在CPU上有大约 1/6 的训练时间降低收益(在对齐GCC版本、编译参数、影响大的定制算子之后)。
- 目前开启XLA对wall time没有收益,但可以实现降低对CPU的占用(在某些XLA配置参数下)。可以期待后续社区更新。
- DeepRec除了自身定制功能外,(在比赛中默认开启的特性下)领先TF master的只有少数修改,可以考虑直接贡献给TF master。(虽然这可能是DeepRec项目组不愿做的)
- 主要是 AdamOptimizer 的 SparseApplyAdam 算子
基于TF使用2.12 nightly版本,但实际上从2.10-2.12都没有太大差别,这三个版本间的移植工作量很小。
比赛的测试环境模拟了一个老旧的用户版本的场景:GCC 7.5、Python 3.6、其他依赖库都锚定于 TF 1.15。 本Demo实现了在不修改用户环境下对这些因素的支持:
- 针对GCC的更新:在wheel包内加载新的libstdc++.so.6,并在import时抢先载入
- 针对Python 3.6:TF 2.x的代码可以在少量修改下支持基于Python 3.6上编译。
- 其他Python依赖库:可以打包在同一个wheel包内,不必依赖用户更新依赖库。
Documentation |
|---|
TensorFlow is an end-to-end open source platform for machine learning. It has a comprehensive, flexible ecosystem of tools, libraries, and community resources that lets researchers push the state-of-the-art in ML and developers easily build and deploy ML-powered applications.
TensorFlow was originally developed by researchers and engineers working on the Google Brain team within Google's Machine Intelligence Research organization to conduct machine learning and deep neural networks research. The system is general enough to be applicable in a wide variety of other domains, as well.
TensorFlow provides stable Python and C++ APIs, as well as non-guaranteed backward compatible API for other languages.
Keep up-to-date with release announcements and security updates by subscribing to announce@tensorflow.org. See all the mailing lists.
See the TensorFlow install guide for the pip package, to enable GPU support, use a Docker container, and build from source.
To install the current release, which includes support for CUDA-enabled GPU cards (Ubuntu and Windows):
$ pip install tensorflow
Other devices (DirectX and MacOS-metal) are supported using Device plugins.
A smaller CPU-only package is also available:
$ pip install tensorflow-cpu
To update TensorFlow to the latest version, add --upgrade flag to the above
commands.
Nightly binaries are available for testing using the tf-nightly and tf-nightly-cpu packages on PyPi.
$ python>>> import tensorflow as tf
>>> tf.add(1, 2).numpy()
3
>>> hello = tf.constant('Hello, TensorFlow!')
>>> hello.numpy()
b'Hello, TensorFlow!'For more examples, see the TensorFlow tutorials.
If you want to contribute to TensorFlow, be sure to review the contribution guidelines. This project adheres to TensorFlow's code of conduct. By participating, you are expected to uphold this code.
We use GitHub issues for tracking requests and bugs, please see TensorFlow Discuss for general questions and discussion, and please direct specific questions to Stack Overflow.
The TensorFlow project strives to abide by generally accepted best practices in open-source software development.
You can find more community-supported platforms and configurations in the TensorFlow SIG Build community builds table.
| Build Type | Status | Artifacts |
|---|---|---|
| Linux CPU | PyPI | |
| Linux GPU | PyPI | |
| Linux XLA | TBA | |
| macOS | PyPI | |
| Windows CPU | PyPI | |
| Windows GPU | PyPI | |
| Android | Download | |
| Raspberry Pi 0 and 1 | Py3 | |
| Raspberry Pi 2 and 3 | Py3 | |
| Libtensorflow MacOS CPU | Status Temporarily Unavailable | Nightly Binary Official GCS |
| Libtensorflow Linux CPU | Status Temporarily Unavailable | Nightly Binary Official GCS |
| Libtensorflow Linux GPU | Status Temporarily Unavailable | Nightly Binary Official GCS |
| Libtensorflow Windows CPU | Status Temporarily Unavailable | Nightly Binary Official GCS |
| Libtensorflow Windows GPU | Status Temporarily Unavailable | Nightly Binary Official GCS |
- TensorFlow.org
- TensorFlow Tutorials
- TensorFlow Official Models
- TensorFlow Examples
- TensorFlow Codelabs
- TensorFlow Blog
- Learn ML with TensorFlow
- TensorFlow Twitter
- TensorFlow YouTube
- TensorFlow model optimization roadmap
- TensorFlow White Papers
- TensorBoard Visualization Toolkit
- TensorFlow Code Search
Learn more about the TensorFlow community and how to contribute.
- Deep Learning with Tensorflow from Edx
- DeepLearning.AI TensorFlow Developer Professional Certificate from Coursera
- TensorFlow: Data and Deployment from Coursera
- Getting Started with TensorFlow 2 from Coursera
- TensorFlow: Advanced Techniques from Coursera
- TensorFlow 2 for Deep Learning Specialization from Coursera
- Intro to TensorFlow for A.I, M.L, and D.L from Coursera
- Machine Learning with TensorFlow on GCP from Coursera
- Intro to TensorFlow for Deep Learning from Udacity
- Introduction to TensorFlow Lite from Udacity
