[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-tensorflow--recommenders-addons":3,"tool-tensorflow--recommenders-addons":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":113,"forks":114,"last_commit_at":115,"license":116,"difficulty_score":117,"env_os":118,"env_gpu":119,"env_ram":120,"env_deps":121,"category_tags":133,"github_topics":134,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":139,"updated_at":140,"faqs":141,"releases":171},5247,"tensorflow\u002Frecommenders-addons","recommenders-addons","Additional utils and helpers to extend TensorFlow when build recommendation systems, contributed and maintained by SIG Recommenders.","TensorFlow Recommenders Addons 是专为构建大规模推荐系统而设计的 TensorFlow 扩展工具库，由 SIG Recommenders 社区维护。它核心解决了传统静态嵌入技术在处理海量稀疏数据时面临的哈希冲突和内存瓶颈问题，通过引入“动态嵌入技术”，让键值对数据结构在 TensorFlow 中变得可训练且高效。\n\n这款工具特别适合从事搜索、推荐及广告算法开发的工程师与研究人员使用。其独特亮点在于完全兼容原生 TensorFlow 的优化器、检查点及模型格式，无需大幅修改现有代码即可升级架构。它支持多种高性能存储后端，包括基于 CPU 的 Cuckoo Hash、NVIDIA 提供的 GPU 加速 HierarchicalKV 以及 Redis，并能灵活适配 TF Serving 和 Triton 等推理框架。此外，它还创新性地支持基于 Horovod 的半同步训练模式，即对稠密权重进行同步训练，而对稀疏权重实行异步训练，从而显著提升大规模模型的训练效率与推荐效果。无论是希望优化现有模型性能的开发者，还是探索前沿推荐算法的研究者，都能从中获得强大的技术支持","TensorFlow Recommenders Addons 是专为构建大规模推荐系统而设计的 TensorFlow 扩展工具库，由 SIG Recommenders 社区维护。它核心解决了传统静态嵌入技术在处理海量稀疏数据时面临的哈希冲突和内存瓶颈问题，通过引入“动态嵌入技术”，让键值对数据结构在 TensorFlow 中变得可训练且高效。\n\n这款工具特别适合从事搜索、推荐及广告算法开发的工程师与研究人员使用。其独特亮点在于完全兼容原生 TensorFlow 的优化器、检查点及模型格式，无需大幅修改现有代码即可升级架构。它支持多种高性能存储后端，包括基于 CPU 的 Cuckoo Hash、NVIDIA 提供的 GPU 加速 HierarchicalKV 以及 Redis，并能灵活适配 TF Serving 和 Triton 等推理框架。此外，它还创新性地支持基于 Horovod 的半同步训练模式，即对稠密权重进行同步训练，而对稀疏权重实行异步训练，从而显著提升大规模模型的训练效率与推荐效果。无论是希望优化现有模型性能的开发者，还是探索前沿推荐算法的研究者，都能从中获得强大的技术支持。","# TensorFlow Recommenders Addons\n-----------------\n![TensorFlow Recommenders logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_89712ec0c166.png)\n[![PyPI Status Badge](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Ftensorflow-recommenders-addons.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Ftensorflow-recommenders-addons\u002F)\n[![PyPI - Python Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Ftensorflow-recommenders-addons)](https:\u002F\u002Fpypi.org\u002Fproject\u002Ftensorflow-recommenders-addons\u002F)\n[![Documentation](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fapi-reference-blue.svg)](docs\u002Fapi_docs\u002F)\n\nTensorFlow Recommenders Addons(TFRA) are a collection of projects related to large-scale recommendation systems \nbuilt upon TensorFlow by introducing the **Dynamic Embedding Technology** to TensorFlow \nthat makes TensorFlow more suitable for training models of **Search, Recommendations, and Advertising** and \nmakes building, evaluating, and serving sophisticated recommenders models easy. \nSee approved TensorFlow RFC #[313](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fcommunity\u002Fpull\u002F313).\nThose contributions will be complementary to TensorFlow Core and TensorFlow Recommenders etc. \n\nFor Apple silicon(M1), please refer to [Apple Silicon Support](#apple-silicon-support).\n\n## Main Features\n\n- Make key-value data structure (dynamic embedding) trainable in TensorFlow\n- Get better recommendation effect compared to static embedding mechanism with no hash conflicts\n- Compatible with all native TensorFlow optimizers and initializers\n- Compatible with native TensorFlow CheckPoint and SavedModel format\n- Fully support train and inference recommenders models on GPUs\n- Support [TF serving](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fserving) and [Triton Inference Server](https:\u002F\u002Fgithub.com\u002Ftriton-inference-server\u002Fserver) as inference framework\n- Support variant Key-Value implements as dynamic embedding storage and easy to extend\n  - [cuckoohash_map](https:\u002F\u002Fgithub.com\u002Fefficient\u002Flibcuckoo) (from Efficient Computing at Carnegie Mellon, on CPU)\n  - [HierarchicalKV](https:\u002F\u002Fgithub.com\u002FNVIDIA-Merlin\u002FHierarchicalKV) (from NVIDIA, on GPU)\n  - [Redis](https:\u002F\u002Fgithub.com\u002Fredis\u002Fredis)\n- Support half synchronous training based on Horovod\n  - Synchronous training for dense weights\n  - Asynchronous training for sparse weights\n\n## Subpackages\n\n* [tfra.dynamic_embedding](docs\u002Fapi_docs\u002Ftfra\u002Fdynamic_embedding.md), [RFC](rfcs\u002F20200424-sparse-domain-isolation.md)\n* [tfra.embedding_variable](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdocs\u002Ftutorials\u002Fembedding_variable_tutorial.ipynb), [RFC](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1odez6-69YH-eFcp8rKndDHTNGxZgdFFRJufsW94_gl4)\n\n## Contributors\n\nTensorFlow Recommenders-Addons depends on public contributions, bug fixes, and documentation.\nThis project exists thanks to all the people and organizations who contribute. [[Contribute](CONTRIBUTING.md)]\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_1d56a0e035d8.png\" \u002F>\n\u003C\u002Fa>\n\n\n\\\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftencent\">\n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_f7e555885da8.png\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Falibaba\">\n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_45dcee9000d3.jpg\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fvip.com\u002F\"> \n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_4cd4c735556c.jpg\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.zhipin.com\u002F\u002F\">\n  \u003Ckbd> \u003Cimg src=\".\u002Fassets\u002Fboss.svg\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\n\n\\\nA special thanks to [NVIDIA Merlin Team](https:\u002F\u002Fgithub.com\u002FNVIDIA-Merlin) and NVIDIA China DevTech Team, \nwho have provided GPU acceleration technology support and code contribution.\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA-Merlin\">\n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_fff28fda44fa.png\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\n\n\n## Tutorials & Demos\nSee [tutorials](docs\u002Ftutorials\u002F) and [demo](demo\u002F) for end-to-end examples of each subpackages.\n\n## Installation\n#### Stable Builds\nTensorFlow Recommenders-Addons is available on PyPI for Linux, macOS. To install the latest version, \nrun the following:\n```\npip install tensorflow-recommenders-addons\n```\nBefore version 0.8, to install GPU version, run the following:\n```\npip install tensorflow-recommenders-addons-gpu\n```\n\nTo use TensorFlow Recommenders-Addons:\n\n```python\nimport tensorflow as tf\nimport tensorflow_recommenders_addons as tfra\n```\n\n### Compatibility with Tensorflow\nTensorFlow C++ APIs are not stable and thus we can only guarantee compatibility with the \nversion TensorFlow Recommenders-Addons(TFRA) was built against. It is possible TFRA will work with \nmultiple versions of TensorFlow, but there is also a chance for segmentation faults or other problematic \ncrashes. Warnings will be emitted if your TensorFlow version does not match what it was built against.\n\nAdditionally, TFRA custom ops registration does not have a stable ABI interface so it is \nrequired that users have a compatible installation of TensorFlow even if the versions \nmatch what we had built against. A simplification of this is that **TensorFlow Recommenders-Addons \ncustom ops will work with `pip`-installed TensorFlow** but will have issues when TensorFlow \nis compiled differently. A typical example of this would be `conda`-installed TensorFlow.\n[RFC #133](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fcommunity\u002Fpull\u002F133) aims to fix this.\n\n\n#### Compatibility Matrix\n*GPU is supported by version `0.2.0` and later.*\n\n| TFRA  | TensorFlow | Compiler   | CUDA | CUDNN | Compute Capability           | CPU      |\n|:------|:-----------|:-----------|:-----|:------|:-----------------------------|:---------|\n| 0.8.0 | 2.16.2     | GCC 8.2.1  | 12.3 | 8.9   | 7.0, 7.5, 8.0, 8.6, 8.9, 9.0 | x86      |\n| 0.8.0 | 2.16.2     | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.7.0 | 2.15.1     | GCC 8.2.1  | 12.2 | 8.9   | 7.0, 7.5, 8.0, 8.6, 8.9, 9.0 | x86      |\n| 0.7.0 | 2.15.1     | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.6.0 | 2.8.3      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.6.0 | 2.6.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.5.1 | 2.8.3      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.5.1 | 2.6.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.5.0 | 2.8.3      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.5.0 | 2.6.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.4.0 | 2.5.1      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.4.0 | 2.5.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.3.1 | 2.5.1      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.2.0 | 2.4.1      | GCC 7.3.1  | 11.0 | 8.0   | 6.0, 6.1, 7.0, 7.5, 8.0      | x86      |\n| 0.2.0 | 1.15.2     | GCC 7.3.1  | 10.0 | 7.6   | 6.0, 6.1, 7.0, 7.5           | x86      |\n| 0.1.0 | 2.4.1      | GCC 7.3.1  | -    | -     | -                            | x86      |\n\nCheck [nvidia-support-matrix](https:\u002F\u002Fdocs.nvidia.com\u002Fdeeplearning\u002Fcudnn\u002Fsupport-matrix\u002Findex.html) for more details.\n\n**NOTICE**\n\n- The release packages have a strict version binding relationship with TensorFlow. \n- Due to the significant changes in the Tensorflow API, we can only ensure version 0.2.0 compatibility with TF1.15.2 on CPU & GPU, \n  but **there are no official releases**, you can only get it through compiling by the following:\n```sh\nPY_VERSION=\"3.9\" \\\nTF_VERSION=\"2.15.1\" \\\nTF_NEED_CUDA=1 \\\nsh .github\u002Fworkflows\u002Fmake_wheel_Linux_x86.sh\n\n# .whl file will be created in .\u002Fwheelhouse\u002F\n```\n\n- If you need to work with TensorFlow 1.14.x or older version, we suggest you give up,\nbut maybe this doc can help you : [Extract headers from TensorFlow compiling directory](.\u002Fbuild_deps\u002Ftf_header\u002FREADME.md).\nAt the same time, we find some OPs used by TRFA have better performance, so we highly recommend you update TensorFlow to 2.x.\n\n### Installing from Source\n\nFor all developers, we recommend you use the development docker containers which are all GPU enabled:\n```sh\ndocker pull tfra\u002Fdev_container:latest-tf2.15.1-python3.9  # Available tensorflow and python combinations can be found [here](https:\u002F\u002Fwww.tensorflow.org\u002Finstall\u002Fsource#linux)\ndocker run --privileged --gpus all -it --rm -v $(pwd):$(pwd) tfra\u002Fdev_container:latest-tf2.15.1-python3.9\n```\n\n#### CPU Only\nYou can also install from source. This requires the [Bazel](https:\u002F\u002Fbazel.build\u002F) build system (version == 5.1.1).\nPlease install a TensorFlow on your compiling machine, The compiler needs to know the version of Tensorflow and \nits headers according to the installed TensorFlow. \n\n```sh\nexport TF_VERSION=\"2.15.1\"  # \"2.11.0\" are well tested.\npip install tensorflow==$TF_VERSION\n\ngit clone https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\ncd recommenders-addons\n\n# This script links project with TensorFlow dependency\npython configure.py\n\nbazel build --enable_runfiles build_pip_pkg\nbazel-bin\u002Fbuild_pip_pkg artifacts\n\npip install artifacts\u002Ftensorflow_recommenders_addons-*.whl\n```\n#### GPU Support\nOnly `TF_NEED_CUDA=1` is required and other environment variables are optional:\n```sh\nexport TF_VERSION=\"2.15.1\"  # \"2.11.0\" is well tested.\nexport PY_VERSION=\"3.9\" \nexport TF_NEED_CUDA=1\nexport TF_CUDA_VERSION=12.2 # nvcc --version to check version\nexport TF_CUDNN_VERSION=8.9 # print(\"cuDNN version:\", tf.sysconfig.get_build_info()[\"cudnn_version\"])\nexport CUDA_TOOLKIT_PATH=\"\u002Fusr\u002Flocal\u002Fcuda\"\nexport CUDNN_INSTALL_PATH=\"\u002Fusr\u002Flib\u002Fx86_64-linux-gnu\"\n\npython configure.py\n```\nAnd then build the pip package and install:\n```sh\nbazel build --enable_runfiles build_pip_pkg\nbazel-bin\u002Fbuild_pip_pkg artifacts\npip install artifacts\u002Ftensorflow_recommenders_addons_gpu-*.whl\n```\nto run unit test\n```sh\ncp -f .\u002Fbazel-bin\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F*.so .\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F\npip install pytest\npython tensorflow_recommenders_addons\u002Ftests\u002Frun_all_test.py\n# and run pytest such as\npytest -s tensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fpython\u002Fkernel_tests\u002Fhkv_hashtable_ops_test.py\n```\n\n#### Apple Silicon Support\nRequirements:\n\n- macOS 12.0.0+\n- tensorflow 2.15.1\n- bazel 5.1.1\n\n\n\n**Install TFRA on Apple Silicon via Pypi**\n```sh\npython -m pip install tensorflow-recommenders-addons --no-deps\n```\n\n**Build TFRA on Apple Silicon from Source**\n\n```sh\n# Install bazelisk\nbrew install bazelisk\n\n# Build wheel from source\nTF_VERSION=2.15.1 TF_NEED_CUDA=\"0\" sh .github\u002Fworkflows\u002Fmake_wheel_macOS_arm64.sh\n\n# Install the wheel\npython -m pip install --no-deps .\u002Fartifacts\u002F*.whl\n```\n\n**Known Issues:**\n\nThe Apple silicon version of TFRA doesn't support: \n\n* Data type **float16**\n* Synchronous training based on **Horovod**\n* HierarchicalKV (HKV)\n* `save_to_file_system`\n* `load_from_file_system` \n* `warm_start_util`\n\n`save_to_file_system` and `load_from_file_system` are not supported because TFIO is not supported on apple silicon devices. Horovod and `warm_start_util` are not supported because the natively supported tensorflow-macos doesn't support V1 Tensorflow networks.\n\nThese issues may be fixed in the future release.\n\n\n##### Data Type Matrix for `tfra.dynamic_embedding.Variable` \n\n| Values \\\\ Keys |  int64   |  int32   | string |\n|:--------------:|:--------:|:--------:|:------:| \n|     float      | CPU, GPU | CPU, GPU |  CPU   |\n|    bfloat16    | CPU, GPU |   CPU    |  CPU   |\n|      half      | CPU, GPU |    -     |  CPU   |\n|     int32      | CPU, GPU |   CPU    |  CPU   |\n|      int8      | CPU, GPU |   -      |  CPU   |\n|     int64      |   CPU    |    -     |  CPU   |\n|     double     | CPU, CPU |   CPU    |  CPU   |\n|      bool      |    -     |    -     |  CPU   |\n|     string     |   CPU    |    -     |   -    |\n\n##### To use GPU by `tfra.dynamic_embedding.Variable`\nThe `tfra.dynamic_embedding.Variable` will ignore the device placement mechanism of TensorFlow, \nyou should specify the `devices` onto GPUs explicitly for it.\n\n```python\nimport tensorflow as tf\nimport tensorflow_recommenders_addons as tfra\n\nde = tfra.dynamic_embedding.get_variable(\"VariableOnGpu\",\n                                         devices=[\"\u002Fjob:ps\u002Ftask:0\u002FGPU:0\", ],\n                                         # ...\n                                         )\n```\n\n**Usage restrictions on GPU**\n- Only work on Nvidia GPU with cuda compute capability 6.0 or higher.\n- Considering the size of the .whl file, currently `dim` only supports less than or equal to 200, if you need longer `dim`, please submit an issue.\n- Only `dynamic_embedding` APIs and relative OPs support running on GPU.\n- For GPU HashTables manage GPU memory independently, TensorFlow should be configured to allow GPU memory growth by the following:\n```python\nsess_config.gpu_options.allow_growth = True\n```\n\n## Inference \n\n### With TensorFlow Serving\n\n#### Compatibility Matrix\n| TFRA  | TensorFlow | Serving branch | Compiler  | CUDA | CUDNN | Compute Capability           |\n|:------|:-----------|:---------------|:----------|:-----|:------|:-----------------------------|\n| 0.8.0 | 2.16.2     | r2.16          | GCC 8.2.1 | 12.3 | 8.9   | 7.0, 7.5, 8.0, 8.6, 8.9, 9.0 |\n| 0.7.0 | 2.15.1     | r2.15          | GCC 8.2.1 | 12.2 | 8.9   | 7.0, 7.5, 8.0, 8.6, 8.9, 9.0 |\n| 0.6.0 | 2.8.3      | r2.8           | GCC 7.3.1 | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 |\n| 0.5.1 | 2.8.3      | r2.8           | GCC 7.3.1 | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 |\n| 0.5.0 | 2.8.3      | r2.8           | GCC 7.3.1 | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 |\n| 0.4.0 | 2.5.1      | r2.5           | GCC 7.3.1 | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 |\n| 0.3.1 | 2.5.1      | r2.5           | GCC 7.3.1 | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 |\n| 0.2.0 | 2.4.1      | r2.4           | GCC 7.3.1 | 11.0 | 8.0   | 6.0, 6.1, 7.0, 7.5, 8.0      |\n| 0.2.0 | 1.15.2     | r1.15          | GCC 7.3.1 | 10.0 | 7.6   | 6.0, 6.1, 7.0, 7.5           |\n| 0.1.0 | 2.4.1      | r2.4           | GCC 7.3.1 | -    | -     | -                            |\n\nServing TFRA-enable models by custom ops in TensorFlow Serving. \n \n```sh\n## If enable GPU OPs\nexport SERVING_WITH_GPU=1 \n\n## Specifiy the branch of TFRA\nexport TFRA_BRANCH=\"master\" # The `master` and `r0.6` are available.\n\n## Create workspace, modify the directory as you prefer to.\nexport TFRA_SERVING_WORKSPACE=~\u002Ftfra_serving_workspace\u002F\nmkdir -p $TFRA_SERVING_WORKSPACE && cd $TFRA_SERVING_WORKSPACE\n\n## Clone the release branches of serving and TFRA according to `Compatibility Matrix`.\ngit clone -b r2.8 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fserving.git\ngit clone -b $TFRA_BRANCH https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\n\n## Run config shell script\ncd $TFRA_SERVING_WORKSPACE\u002Frecommenders-addons\u002Ftools\nbash config_tfserving.sh $TFRA_BRANCH $TFRA_SERVING_WORKSPACE\u002Fserving $SERVING_WITH_GPU\n\n## Build serving with TFRA OPs.\ncd $TFRA_SERVING_WORKSPACE\u002Fserving\n.\u002Ftools\u002Frun_in_docker.sh bazel build tensorflow_serving\u002Fmodel_servers:tensorflow_model_server\n\n```\n\nFor more detail, please refer to the shell script `.\u002Ftools\u002Fconfig_tfserving.sh`.\n\n**NOTICE**\n- Distributed inference is only supported when using Redis as Key-Value storage. \n- Reference documents: https:\u002F\u002Fwww.tensorflow.org\u002Ftfx\u002Fserving\u002Fcustom_op\n\n### With Triton\nWhen building the custom operations shared library it is important to\nuse the same version of TensorFlow as is being used in Triton. You can\nfind the TensorFlow version in the [Triton Release\nNotes](https:\u002F\u002Fdocs.nvidia.com\u002Fdeeplearning\u002Ftriton-inference-server\u002Frelease-notes\u002Findex.html). A\nsimple way to ensure you are using the correct version of TensorFlow\nis to use the [NGC TensorFlow\ncontainer](https:\u002F\u002Fngc.nvidia.com\u002Fcatalog\u002Fcontainers\u002Fnvidia:tensorflow)\ncorresponding to the Triton container. For example, if you are using\nthe 23.05 version of Triton, use the 23.05 version of the TensorFlow\ncontainer.\n```bash\ndocker pull nvcr.io\u002Fnvidia\u002Ftritonserver:22.05-py3\n\nexport TFRA_BRANCH=\"master\"\ngit clone -b $TFRA_BRANCH https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\ncd recommenders-addons\n\npython configure.py\nbazel build \u002F\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore:_cuckoo_hashtable_ops.so ##bazel 5.1.1 is well tested\nmkdir \u002Ftmp\u002Fso\n#you can also use the so file from pip install package file from \"(PYTHONPATH)\u002Fsite-packages\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F_cuckoo_hashtable_ops.so\"\ncp bazel-bin\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F_cuckoo_hashtable_ops.so \u002Ftmp\u002Fso\n\n#tfra saved_model directory \"\u002Fmodels\u002Fmodel_repository\"\ndocker run --net=host -v \u002Fmodels\u002Fmodel_repository:\u002Fmodels nvcr.io\u002Fnvidia\u002Ftritonserver:22.05-py3 bash -c \\\n  \"LD_PRELOAD=\u002Ftmp\u002Fso\u002F_cuckoo_hashtable_ops.so:${LD_PRELOAD} tritonserver --model-repository=\u002Fmodels\u002F --backend-config=tensorflow,version=2 --strict-model-config=false\"\n```\n\n**NOTICE**\n- The above LD_LIBRARY_PATH and backend-config must be set Because the default backend is tf1.\n\n\n## Community\n\n* SIG Recommenders mailing list:\n[recommenders@tensorflow.org](https:\u002F\u002Fgroups.google.com\u002Fa\u002Ftensorflow.org\u002Fg\u002Frecommenders)\n\n## Acknowledgment\nWe are very grateful to the maintainers of [tensorflow\u002Faddons](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Faddons) for borrowing a lot of code from [tensorflow\u002Faddons](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Faddons) to build our workflow and documentation system.\nWe also want to extend a thank you to the Google team members who have helped with CI setup and reviews!\n\n## License\nApache License 2.0\n\n\n\n","# TensorFlow 推荐系统附加组件\n-----------------\n![TensorFlow 推荐系统标志](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_89712ec0c166.png)\n[![PyPI 状态徽章](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Ftensorflow-recommenders-addons.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Ftensorflow-recommenders-addons\u002F)\n[![PyPI - Python 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Ftensorflow-recommenders-addons)](https:\u002F\u002Fpypi.org\u002Fproject\u002Ftensorflow-recommenders-addons\u002F)\n[![文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fapi-reference-blue.svg)](docs\u002Fapi_docs\u002F)\n\nTensorFlow 推荐系统附加组件（TFRA）是一系列与大规模推荐系统相关的项目，基于 TensorFlow 构建，并引入了 **动态嵌入技术**，使 TensorFlow 更加适合训练 **搜索、推荐和广告** 模型，同时简化了复杂推荐模型的构建、评估和部署流程。详情请参阅已批准的 TensorFlow RFC #[313](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fcommunity\u002Fpull\u002F313)。这些贡献将作为 TensorFlow Core 和 TensorFlow 推荐系统的补充。\n\n对于 Apple Silicon（M1 芯片），请参考 [Apple Silicon 支持](#apple-silicon-support)。\n\n## 主要特性\n\n- 使键值数据结构（动态嵌入）可在 TensorFlow 中进行训练\n- 相比静态嵌入机制，在无哈希冲突的情况下获得更好的推荐效果\n- 兼容所有原生 TensorFlow 优化器和初始化器\n- 兼容原生 TensorFlow CheckPoint 和 SavedModel 格式\n- 完全支持在 GPU 上训练和推理推荐模型\n- 支持 [TF Serving](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fserving) 和 [Triton 推理服务器](https:\u002F\u002Fgithub.com\u002Ftriton-inference-server\u002Fserver) 作为推理框架\n- 支持多种键值实现作为动态嵌入存储，并易于扩展\n  - [cuckoohash_map](https:\u002F\u002Fgithub.com\u002Fefficient\u002Flibcuckoo)（来自卡内基梅隆大学 Efficient Computing 团队，适用于 CPU）\n  - [HierarchicalKV](https:\u002F\u002Fgithub.com\u002FNVIDIA-Merlin\u002FHierarchicalKV)（来自 NVIDIA，适用于 GPU）\n  - [Redis](https:\u002F\u002Fgithub.com\u002Fredis\u002Fredis)\n- 支持基于 Horovod 的半同步训练\n  - 密集权重采用同步训练\n  - 稀疏权重采用异步训练\n\n## 子包\n\n* [tfra.dynamic_embedding](docs\u002Fapi_docs\u002Ftfra\u002Fdynamic_embedding.md), [RFC](rfcs\u002F20200424-sparse-domain-isolation.md)\n* [tfra.embedding_variable](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdocs\u002Ftutorials\u002Fembedding_variable_tutorial.ipynb), [RFC](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1odez6-69YH-eFcp8rKndDHTNGxZgdFFRJufsW94_gl4)\n\n## 贡献者\n\nTensorFlow 推荐系统附加组件依赖于公众的贡献、错误修复和文档编写。本项目得以存在，离不开所有贡献者及其所在组织的支持。[[贡献](CONTRIBUTING.md)]\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_1d56a0e035d8.png\" \u002F>\n\u003C\u002Fa>\n\n\n\\\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftencent\">\n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_f7e555885da8.png\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Falibaba\">\n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_45dcee9000d3.jpg\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fvip.com\u002F\"> \n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_4cd4c735556c.jpg\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.zhipin.com\u002F\u002F\">\n  \u003Ckbd> \u003Cimg src=\".\u002Fassets\u002Fboss.svg\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\n\n\\\n特别感谢 [NVIDIA Merlin 团队](https:\u002F\u002Fgithub.com\u002FNVIDIA-Merlin)以及 NVIDIA 中国开发技术支持团队，他们提供了 GPU 加速技术支持和代码贡献。\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA-Merlin\">\n  \u003Ckbd> \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_readme_fff28fda44fa.png\" height=\"70\" \u002F> \u003C\u002Fkbd>\n\u003C\u002Fa>\n\n\n## 教程与演示\n请参阅 [教程](docs\u002Ftutorials\u002F) 和 [演示](demo\u002F)，以获取各子包的端到端示例。\n\n## 安装\n#### 稳定版本\nTensorFlow 推荐系统附加组件已在 PyPI 上提供，适用于 Linux 和 macOS。要安装最新版本，请运行以下命令：\n```\npip install tensorflow-recommenders-addons\n```\n在 0.8 版本之前，若需安装 GPU 版本，请运行以下命令：\n```\npip install tensorflow-recommenders-addons-gpu\n```\n\n使用 TensorFlow 推荐系统附加组件时：\n\n```python\nimport tensorflow as tf\nimport tensorflow_recommenders_addons as tfra\n```\n\n### 与 TensorFlow 的兼容性\nTensorFlow C++ API 尚未稳定，因此我们仅能保证与构建 TensorFlow Recommenders-Addons (TFRA) 时所针对的版本兼容。虽然 TFRA 有可能在多个 TensorFlow 版本上运行，但也存在出现段错误或其他问题导致崩溃的风险。如果您的 TensorFlow 版本与构建时使用的版本不匹配，系统将发出警告。\n\n此外，TFRA 自定义算子的注册没有稳定的 ABI 接口，因此即使用户的 TensorFlow 版本与我们构建时使用的版本一致，仍然需要安装兼容的 TensorFlow 环境。简单来说，**TensorFlow Recommenders-Addons 的自定义算子可以与通过 `pip` 安装的 TensorFlow 配合使用**，但如果 TensorFlow 是以不同方式编译的，则可能会出现问题。一个典型的例子就是通过 `conda` 安装的 TensorFlow。[RFC #133](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fcommunity\u002Fpull\u002F133) 旨在解决这一问题。\n\n\n#### 兼容性矩阵\n*GPU 支持从版本 `0.2.0` 及以上开始。*\n\n| TFRA  | TensorFlow | 编译器   | CUDA | CUDNN | 计算能力           | CPU      |\n|:------|:-----------|:-----------|:-----|:------|:-----------------------------|:---------|\n| 0.8.0 | 2.16.2     | GCC 8.2.1  | 12.3 | 8.9   | 7.0, 7.5, 8.0, 8.6, 8.9, 9.0 | x86      |\n| 0.8.0 | 2.16.2     | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.7.0 | 2.15.1     | GCC 8.2.1  | 12.2 | 8.9   | 7.0, 7.5, 8.0, 8.6, 8.9, 9.0 | x86      |\n| 0.7.0 | 2.15.1     | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.6.0 | 2.8.3      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.6.0 | 2.6.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.5.1 | 2.8.3      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.5.1 | 2.6.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.5.0 | 2.8.3      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.5.0 | 2.6.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.4.0 | 2.5.1      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.4.0 | 2.5.0      | Xcode 13.1 | -    | -     | -                            | Apple M1 |\n| 0.3.1 | 2.5.1      | GCC 7.3.1  | 11.2 | 8.1   | 6.0, 6.1, 7.0, 7.5, 8.0, 8.6 | x86      |\n| 0.2.0 | 2.4.1      | GCC 7.3.1  | 11.0 | 8.0   | 6.0, 6.1, 7.0, 7.5, 8.0      | x86      |\n| 0.2.0 | 1.15.2     | GCC 7.3.1  | 10.0 | 7.6   | 6.0, 6.1, 7.0, 7.5           | x86      |\n| 0.1.0 | 2.4.1      | GCC 7.3.1  | -    | -     | -                            | x86      |\n\n更多详细信息请参阅 [NVIDIA 支持矩阵](https:\u002F\u002Fdocs.nvidia.com\u002Fdeeplearning\u002Fcudnn\u002Fsupport-matrix\u002Findex.html)。\n\n**注意**\n\n- 发布包与 TensorFlow 之间存在严格的版本绑定关系。\n- 由于 TensorFlow API 的重大变化，我们只能确保版本 0.2.0 在 CPU 和 GPU 上与 TF1.15.2 兼容，但**没有官方发布版本**，您只能通过以下方式自行编译获得：\n```sh\nPY_VERSION=\"3.9\" \\\nTF_VERSION=\"2.15.1\" \\\nTF_NEED_CUDA=1 \\\nsh .github\u002Fworkflows\u002Fmake_wheel_Linux_x86.sh\n\n# .whl 文件将被创建在 .\u002Fwheelhouse\u002F\n```\n\n- 如果您需要使用 TensorFlow 1.14.x 或更早版本，我们建议您放弃，不过这篇文档或许能帮到您：[从 TensorFlow 编译目录中提取头文件](.\u002Fbuild_deps\u002Ftf_header\u002FREADME.md)。同时，我们发现 TRFA 使用的一些算子性能更好，因此强烈建议您将 TensorFlow 更新至 2.x 版本。\n\n### 从源码安装\n\n对于所有开发者，我们推荐使用已启用 GPU 的开发容器：\n```sh\ndocker pull tfra\u002Fdev_container:latest-tf2.15.1-python3.9  # 可用的 TensorFlow 和 Python 组合请参见 [这里](https:\u002F\u002Fwww.tensorflow.org\u002Finstall\u002Fsource#linux)\ndocker run --privileged --gpus all -it --rm -v $(pwd):$(pwd) tfra\u002Fdev_container:latest-tf2.15.1-python3.9\n```\n\n#### 仅 CPU\n您也可以从源码安装。这需要使用 [Bazel](https:\u002F\u002Fbazel.build\u002F) 构建系统（版本 == 5.1.1）。请在编译机器上安装一个 TensorFlow，编译器需要根据已安装的 TensorFlow 知道其版本和头文件路径。\n\n```sh\nexport TF_VERSION=\"2.15.1\"  # \"2.11.0\" 经过充分测试。\npip install tensorflow==$TF_VERSION\n\ngit clone https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\ncd recommenders-addons\n\n# 此脚本将项目与 TensorFlow 依赖项关联\npython configure.py\n\nbazel build --enable_runfiles build_pip_pkg\nbazel-bin\u002Fbuild_pip_pkg artifacts\n\npip install artifacts\u002Ftensorflow_recommenders_addons-*.whl\n```\n\n#### GPU 支持\n只需设置 `TF_NEED_CUDA=1`，其他环境变量为可选：\n```sh\nexport TF_VERSION=\"2.15.1\"  # \"2.11.0\" 经过充分测试。\nexport PY_VERSION=\"3.9\" \nexport TF_NEED_CUDA=1\nexport TF_CUDA_VERSION=12.2 # 使用 nvcc --version 检查版本\nexport TF_CUDNN_VERSION=8.9 # 打印(\"cuDNN 版本:\", tf.sysconfig.get_build_info()[\"cudnn_version\"])\nexport CUDA_TOOLKIT_PATH=\"\u002Fusr\u002Flocal\u002Fcuda\"\nexport CUDNN_INSTALL_PATH=\"\u002Fusr\u002Flib\u002Fx86_64-linux-gnu\"\n\npython configure.py\n```\n然后构建并安装 pip 包：\n```sh\nbazel build --enable_runfiles build_pip_pkg\nbazel-bin\u002Fbuild_pip_pkg artifacts\npip install artifacts\u002Ftensorflow_recommenders_addons_gpu-*.whl\n```\n要运行单元测试：\n```sh\ncp -f .\u002Fbazel-bin\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F*.so .\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F\npip install pytest\npython tensorflow_recommenders_addons\u002Ftests\u002Frun_all_test.py\n# 并运行 pytest，例如\npytest -s tensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fpython\u002Fkernel_tests\u002Fhkv_hashtable_ops_test.py\n```\n\n#### Apple Silicon 支持\n要求：\n\n- macOS 12.0.0+\n- TensorFlow 2.15.1\n- Bazel 5.1.1\n\n\n\n**通过 Pypi 在 Apple Silicon 上安装 TFRA**\n```sh\npython -m pip install tensorflow-recommenders-addons --no-deps\n```\n\n**从源码在 Apple Silicon 上构建 TFRA**\n\n```sh\n# 安装 bazelisk\nbrew install bazelisk\n\n# 从源码构建 wheel\nTF_VERSION=2.15.1 TF_NEED_CUDA=\"0\" sh .github\u002Fworkflows\u002Fmake_wheel_macOS_arm64.sh\n\n# 安装 wheel 包\npython -m pip install --no-deps .\u002Fartifacts\u002F*.whl\n```\n\n**已知问题：**\n\nTFRA 的 Apple Silicon 版本不支持以下功能：\n\n* 数据类型 **float16**\n* 基于 **Horovod** 的同步训练\n* HierarchicalKV (HKV)\n* `save_to_file_system`\n* `load_from_file_system` \n* `warm_start_util`\n\n`save_to_file_system` 和 `load_from_file_system` 不受支持，因为 TFIO 在 Apple Silicon 设备上不受支持。Horovod 和 `warm_start_util` 也不受支持，因为原生支持的 tensorflow-macos 不支持 V1 Tensorflow 网络。\n\n这些问题可能会在未来的版本中得到修复。\n\n\n##### `tfra.dynamic_embedding.Variable` 的数据类型矩阵\n\n| 值 \\\\ 键 | int64   | int32   | string |\n|:--------------:|:--------:|:--------:|:------:| \n|     float      | CPU, GPU | CPU, GPU |  CPU   |\n|    bfloat16    | CPU, GPU |   CPU    |  CPU   |\n|      half      | CPU, GPU |    -     |  CPU   |\n|     int32      | CPU, GPU |   CPU    |  CPU   |\n|      int8      | CPU, GPU |   -      |  CPU   |\n|     int64      |   CPU    |    -     |  CPU   |\n|     double     | CPU, CPU |   CPU    |  CPU   |\n|      bool      |    -     |    -     |  CPU   |\n|     string     |   CPU    |    -     |   -    |\n\n##### 使用 `tfra.dynamic_embedding.Variable` 进行 GPU 计算\n`tfra.dynamic_embedding.Variable` 会忽略 TensorFlow 的设备放置机制，因此您需要显式地为它指定 GPU 设备。\n\n```python\nimport tensorflow as tf\nimport tensorflow_recommenders_addons as tfra\n\nde = tfra.dynamic_embedding.get_variable(\"VariableOnGpu\",\n                                         devices=[\"\u002Fjob:ps\u002Ftask:0\u002FGPU:0\", ],\n                                         # ...\n                                         )\n```\n\n**GPU 使用限制**\n- 仅适用于具有 CUDA 计算能力 6.0 或更高版本的 NVIDIA GPU。\n- 考虑到 .whl 文件的大小，目前 `dim` 仅支持小于或等于 200。如果需要更大的 `dim`，请提交问题。\n- 只有 `dynamic_embedding` API 及其相关操作支持在 GPU 上运行。\n- 对于 GPU HashTable，它们会独立管理 GPU 内存，因此需要配置 TensorFlow 以允许 GPU 内存增长，如下所示：\n```python\nsess_config.gpu_options.allow_growth = True\n```\n\n## 推理\n\n### 使用 TensorFlow Serving\n\n#### 兼容性矩阵\n| TFRA  | TensorFlow | Serving 分支 | 编译器  | CUDA | CUDNN | 计算能力           |\n|:------|:-----------|:---------------|:----------|:-----|:------|:-----------------------------|\n| 0.8.0 | 2.16.2     | r2.16          | GCC 8.2.1 | 12.3 | 8.9   | 7.0、7.5、8.0、8.6、8.9、9.0 |\n| 0.7.0 | 2.15.1     | r2.15          | GCC 8.2.1 | 12.2 | 8.9   | 7.0、7.5、8.0、8.6、8.9、9.0 |\n| 0.6.0 | 2.8.3      | r2.8           | GCC 7.3.1 | 11.2 | 8.1   | 6.0、6.1、7.0、7.5、8.0、8.6 |\n| 0.5.1 | 2.8.3      | r2.8           | GCC 7.3.1 | 11.2 | 8.1   | 6.0、6.1、7.0、7.5、8.0、8.6 |\n| 0.5.0 | 2.8.3      | r2.8           | GCC 7.3.1 | 11.2 | 8.1   | 6.0、6.1、7.0、7.5、8.0、8.6 |\n| 0.4.0 | 2.5.1      | r2.5           | GCC 7.3.1 | 11.2 | 8.1   | 6.0、6.1、7.0、7.5、8.0、8.6 |\n| 0.3.1 | 2.5.1      | r2.5           | GCC 7.3.1 | 11.2 | 8.1   | 6.0、6.1、7.0、7.5、8.0、8.6 |\n| 0.2.0 | 2.4.1      | r2.4           | GCC 7.3.1 | 11.0 | 8.0   | 6.0、6.1、7.0、7.5、8.0      |\n| 0.2.0 | 1.15.2     | r1.15          | GCC 7.3.1 | 10.0 | 7.6   | 6.0、6.1、7.0、7.5           |\n| 0.1.0 | 2.4.1      | r2.4           | GCC 7.3.1 | -    | -     | -                            |\n\n通过 TensorFlow Serving 中的自定义操作启用 TFRA 模型。\n\n```sh\n## 如果启用 GPU 操作\nexport SERVING_WITH_GPU=1 \n\n## 指定 TFRA 的分支\nexport TFRA_BRANCH=\"master\" # 目前可使用 `master` 和 `r0.6` 分支。\n\n## 创建工作区，您可以根据需要修改目录。\nexport TFRA_SERVING_WORKSPACE=~\u002Ftfra_serving_workspace\u002F\nmkdir -p $TFRA_SERVING_WORKSPACE && cd $TFRA_SERVING_WORKSPACE\n\n## 根据“兼容性矩阵”克隆 Serving 和 TFRA 的发布分支。\ngit clone -b r2.8 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fserving.git\ngit clone -b $TFRA_BRANCH https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\n\n## 运行配置脚本\ncd $TFRA_SERVING_WORKSPACE\u002Frecommenders-addons\u002Ftools\nbash config_tfserving.sh $TFRA_BRANCH $TFRA_SERVING_WORKSPACE\u002Fserving $SERVING_WITH_GPU\n\n## 构建带有 TFRA 操作的 Serving。\ncd $TFRA_SERVING_WORKSPACE\u002Fserving\n.\u002Ftools\u002Frun_in_docker.sh bazel build tensorflow_serving\u002Fmodel_servers:tensorflow_model_server\n\n```\n\n更多详细信息，请参阅脚本 `.\u002Ftools\u002Fconfig_tfserving.sh`。\n\n**注意**\n- 分布式推理仅在使用 Redis 作为键值存储时才支持。\n- 参考文档：https:\u002F\u002Fwww.tensorflow.org\u002Ftfx\u002Fserving\u002Fcustom_op\n\n### 使用 Triton\n在构建自定义操作共享库时，务必使用与 Triton 中相同的 TensorFlow 版本。您可以在 [Triton 发行说明](https:\u002F\u002Fdocs.nvidia.com\u002Fdeeplearning\u002Ftriton-inference-server\u002Frelease-notes\u002Findex.html) 中找到 TensorFlow 版本。确保使用正确 TensorFlow 版本的简单方法是使用与 Triton 容器相对应的 [NGC TensorFlow 容器](https:\u002F\u002Fngc.nvidia.com\u002Fcatalog\u002Fcontainers\u002Fnvidia:tensorflow)。例如，如果您使用的是 Triton 23.05 版本，则应使用 TensorFlow 23.05 版本。\n```bash\ndocker pull nvcr.io\u002Fnvidia\u002Ftritonserver:22.05-py3\n\nexport TFRA_BRANCH=\"master\"\ngit clone -b $TFRA_BRANCH https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\ncd recommenders-addons\n\npython configure.py\nbazel build \u002F\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore:_cuckoo_hashtable_ops.so ##bazel 5.1.1 已经过充分测试\nmkdir \u002Ftmp\u002Fso\n#您也可以使用从 pip 安装包中获取的 so 文件，路径为 \"(PYTHONPATH)\u002Fsite-packages\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F_cuckoo_hashtable_ops.so\"\ncp bazel-bin\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fcore\u002F_cuckoo_hashtable_ops.so \u002Ftmp\u002Fso\n\n#tfra saved_model 目录 \"\u002Fmodels\u002Fmodel_repository\"\ndocker run --net=host -v \u002Fmodels\u002Fmodel_repository:\u002Fmodels nvcr.io\u002Fnvidia\u002Ftritonserver:22.05-py3 bash -c \\\n  \"LD_PRELOAD=\u002Ftmp\u002Fso\u002F_cuckoo_hashtable_ops.so:${LD_PRELOAD} tritonserver --model-repository=\u002Fmodels\u002F --backend-config=tensorflow,version=2 --strict-model-config=false\"\n```\n\n**注意**\n- 必须设置上述 LD_LIBRARY_PATH 和 backend-config，因为默认后端是 tf1。\n\n\n## 社区\n\n* SIG Recommenders 邮件列表：\n[recommenders@tensorflow.org](https:\u002F\u002Fgroups.google.com\u002Fa\u002Ftensorflow.org\u002Fg\u002Frecommenders)\n\n## 致谢\n我们非常感谢 [tensorflow\u002Faddons](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Faddons) 的维护者们，他们借用了大量代码来自 [tensorflow\u002Faddons](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Faddons)，帮助我们构建了工作流和文档系统。同时，我们也感谢 Google 团队成员在 CI 设置和评审方面提供的帮助！\n\n## 许可证\nApache License 2.0","# TensorFlow Recommenders Addons (TFRA) 快速上手指南\n\nTensorFlow Recommenders Addons (TFRA) 是基于 TensorFlow 构建的大规模推荐系统工具集。它引入了**动态嵌入（Dynamic Embedding）**技术，解决了传统静态嵌入在海量稀疏特征场景下的哈希冲突和显存限制问题，特别适用于搜索、推荐和广告场景。\n\n## 1. 环境准备\n\n### 系统要求\n*   **操作系统**: Linux (x86), macOS (Intel & Apple Silicon M1\u002FM2)\n*   **Python 版本**: 推荐 3.9 (支持 3.7+)\n*   **构建工具**: Bazel 5.1.1 (仅源码编译时需要)\n\n### 前置依赖与版本兼容性\nTFRA 与 TensorFlow 版本严格绑定。请确保安装对应的 TensorFlow 版本，否则可能出现崩溃或警告。\n\n| TFRA 版本 | 推荐 TensorFlow 版本 | GPU 支持 | 备注 |\n| :--- | :--- | :--- | :--- |\n| **0.8.0** | 2.16.2 | ✅ (CUDA 12.3) | 最新稳定版 |\n| **0.7.0** | 2.15.1 | ✅ (CUDA 12.2) | 广泛使用版本 |\n| **0.6.0** | 2.8.3 \u002F 2.6.0 | ✅ | - |\n\n> **注意**：\n> *   **GPU 用户**：需安装对应版本的 `tensorflow` (包含 GPU 支持)。\n> *   **Apple Silicon (M1\u002FM2)**：需 macOS 12.0+，TensorFlow 2.15.1，且部分功能（如 float16, Horovod, HKV）暂不支持。\n> *   **Conda 用户**：由于自定义算子 ABI 接口限制，推荐使用 `pip` 安装的 TensorFlow，Conda 版本可能无法正常工作。\n\n## 2. 安装步骤\n\n### 方式一：PyPI 安装（推荐）\n\n适用于大多数 Linux 和 macOS 用户。\n\n**标准安装 (CPU\u002FGPU 通用，新版):**\n```bash\npip install tensorflow-recommenders-addons\n```\n\n**旧版 GPU 专用 (仅限 TFRA \u003C 0.8):**\n如果你使用的是 0.8 之前的版本且需要 GPU 支持：\n```bash\npip install tensorflow-recommenders-addons-gpu\n```\n\n**Apple Silicon (M1\u002FM2) 特殊安装:**\n由于依赖关系复杂，建议忽略依赖自动安装，手动管理 TensorFlow：\n```bash\n# 先确保安装了 tensorflow-macos\npython -m pip install tensorflow-recommenders-addons --no-deps\n```\n\n### 方式二：源码编译安装\n\n适用于需要特定版本组合或使用 Conda 环境的开发者。\n\n**1. 准备环境 (以 Docker 为例，推荐):**\n```bash\ndocker pull tfra\u002Fdev_container:latest-tf2.15.1-python3.9\ndocker run --privileged --gpus all -it --rm -v $(pwd):$(pwd) tfra\u002Fdev_container:latest-tf2.15.1-python3.9\n```\n\n**2. 配置与编译 (CPU 版本):**\n```bash\nexport TF_VERSION=\"2.15.1\"\npip install tensorflow==$TF_VERSION\n\ngit clone https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons.git\ncd recommenders-addons\n\npython configure.py\n\nbazel build --enable_runfiles build_pip_pkg\nbazel-bin\u002Fbuild_pip_pkg artifacts\n\npip install artifacts\u002Ftensorflow_recommenders_addons-*.whl\n```\n\n**3. 配置与编译 (GPU 版本):**\n设置 CUDA 环境变量后执行编译：\n```bash\nexport TF_VERSION=\"2.15.1\"\nexport TF_NEED_CUDA=1\nexport TF_CUDA_VERSION=12.2\nexport TF_CUDNN_VERSION=8.9\n# 根据实际路径调整\nexport CUDA_TOOLKIT_PATH=\"\u002Fusr\u002Flocal\u002Fcuda\" \nexport CUDNN_INSTALL_PATH=\"\u002Fusr\u002Flib\u002Fx86_64-linux-gnu\"\n\npython configure.py\nbazel build --enable_runfiles build_pip_pkg\nbazel-bin\u002Fbuild_pip_pkg artifacts\n\npip install artifacts\u002Ftensorflow_recommenders_addons_gpu-*.whl\n```\n\n## 3. 基本使用\n\n### 导入库\n```python\nimport tensorflow as tf\nimport tensorflow_recommenders_addons as tfra\n```\n\n### 核心功能：动态嵌入 (Dynamic Embedding)\n与传统 `tf.Embedding` 不同，`tfra.dynamic_embedding.Variable` 允许嵌入表大小动态增长，无需预先设定词汇表大小，且支持海量稀疏特征。\n\n**简单示例：**\n\n```python\nimport tensorflow as tf\nimport tensorflow_recommenders_addons as tfra\n\n# 1. 创建动态嵌入变量\n# keys 可以是 int64, string 等，values 支持多种数据类型\nembedding = tfra.dynamic_embedding.Variable(\n    name=\"user_embedding\",\n    key_dtype=tf.int64,\n    value_dtype=tf.float32,\n    initializer=tf.random_normal_initializer(),\n    dim=128  # 嵌入维度\n)\n\n# 2. 定义查找操作 (Lookup)\n# ids: [batch_size]\nids = tf.constant([1001, 2002, 999999], dtype=tf.int64) \n\n# 获取嵌入向量: [batch_size, dim]\n# 如果 key 不存在，会自动创建并初始化\nembeddings = embedding.lookup(ids)\n\n# 3. 在模型中使用 (配合 GradientTape)\nwith tf.GradientTape() as tape:\n    loss = tf.reduce_mean(embeddings ** 2) # 示例损失函数\n\n# 4. 计算梯度并优化\ngrads = tape.gradient(loss, embedding.trainable_variables)\noptimizer = tf.keras.optimizers.SGD(learning_rate=0.01)\noptimizer.apply_gradients(zip(grads, embedding.trainable_variables))\n\nprint(\"动态嵌入形状:\", embeddings.shape)\n```\n\n### 关键特性提示\n*   **设备放置**：`tfra.dynamic_embedding.Variable` 会忽略 TensorFlow 默认的设备放置机制。若在 GPU 上训练，必须显式指定设备或在创建变量时配置存储后端（如 HierarchicalKV）。\n*   **保存与加载**：完全兼容 TensorFlow 原生的 `CheckPoint` 和 `SavedModel` 格式。\n*   **分布式训练**：支持基于 Horovod 的半同步训练（稠密权重同步，稀疏权重异步）。","某大型电商平台的算法团队正在构建一个实时个性化商品推荐系统，需要处理亿级用户和千万级商品的动态交互数据。\n\n### 没有 recommenders-addons 时\n- **哈希冲突严重**：使用静态嵌入表时，海量稀疏 ID 被迫映射到固定大小的表中，导致严重的哈希冲突，大幅降低推荐准确率。\n- **内存资源浪费**：为了减少冲突不得不预分配巨大的嵌入矩阵，即使大量商品从未被点击，也占用了宝贵的 GPU 显存。\n- **新物品冷启动慢**：新上架商品无法动态加入嵌入表，必须等待离线重新训练模型并全量部署，导致新物品无法及时获得流量。\n- **训练架构复杂**：为了实现稀疏参数的异步更新以加速训练，需要自行开发复杂的分布式通信逻辑，维护成本极高。\n\n### 使用 recommenders-addons 后\n- **零冲突动态扩容**：利用 `tfra.dynamic_embedding` 技术，嵌入表随数据动态增长，彻底消除哈希冲突，显著提升模型拟合能力。\n- **显存按需分配**：仅存储实际出现过的特征 ID，显存占用降低 60% 以上，使得在单卡上训练超大规模模型成为可能。\n- **实时热更新**：新商品 ID 可在训练过程中自动注册并参与梯度更新，实现分钟级的新物品冷启动支持。\n- **原生异步训练**：原生支持基于 Horovod 的半同步训练模式，稠密参数同步、稀疏参数异步，无需额外开发即可享受高性能分布式训练。\n\nrecommenders-addons 通过引入动态嵌入技术，让 TensorFlow 能够以更低成本和更高效率应对搜索、推荐与广告场景下的超大规模稀疏数据挑战。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_recommenders-addons_7ddc8ded.png","tensorflow","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftensorflow_07ed5093.png","",null,"github-admin@tensorflow.org","http:\u002F\u002Fwww.tensorflow.org","https:\u002F\u002Fgithub.com\u002Ftensorflow",[81,85,89,93,97,101,105,109],{"name":82,"color":83,"percentage":84},"Cuda","#3A4E3A",46.1,{"name":86,"color":87,"percentage":88},"Python","#3572A5",26,{"name":90,"color":91,"percentage":92},"C++","#f34b7d",17.6,{"name":94,"color":95,"percentage":96},"C","#555555",3.8,{"name":98,"color":99,"percentage":100},"Smarty","#f0c040",2.2,{"name":102,"color":103,"percentage":104},"Starlark","#76d275",1.9,{"name":106,"color":107,"percentage":108},"Dockerfile","#384d54",1.3,{"name":110,"color":111,"percentage":112},"Shell","#89e051",1.2,634,145,"2026-03-22T14:23:03","Apache-2.0",4,"Linux, macOS","可选（CPU 可用）。若使用 GPU，需 NVIDIA 显卡（计算能力 6.0-9.0），显存未明确说明（建议 8GB+ 以支持大规模动态嵌入），CUDA 版本需与 TFRA 版本匹配（如 TFRA 0.8.0 需 CUDA 12.3，0.7.0 需 CUDA 12.2，0.6.0\u002F0.5.x 需 CUDA 11.2），cuDNN 版本需匹配（如 8.9 或 8.1）。Apple Silicon (M1) 不支持 GPU 加速的 HKV 等功能。","未说明",{"notes":122,"python":123,"dependencies":124},"1. 严格版本绑定：TFRA 与 TensorFlow 版本强绑定，不匹配可能导致崩溃，官方预编译包仅支持 pip 安装的 TensorFlow，不支持 conda 安装的 TensorFlow（因 ABI 接口不稳定）。2. Apple Silicon (M1) 限制：不支持 float16、Horovod 同步训练、HierarchicalKV (HKV) 及部分文件系统操作。3. 动态嵌入技术：核心功能是使键值对数据结构可训练，支持多种后端存储（Cuckoo Hash, HKV, Redis）。4. 源码编译：若需非官方支持版本或自定义配置，需使用 Bazel 5.1.1 进行源码编译，并正确设置 CUDA\u002FcuDNN 环境变量。5. Windows 系统未在支持列表中。","3.9 (官方构建和测试主要基于 3.9，部分旧版本支持其他版本，源码编译需指定 PY_VERSION)",[125,126,127,128,129,130,131,132],"tensorflow==2.16.2 (对应 TFRA 0.8.0)","tensorflow==2.15.1 (对应 TFRA 0.7.0)","tensorflow==2.8.3 (对应 TFRA 0.6.0\u002F0.5.x)","bazel==5.1.1 (源码编译必需)","libcuckoo (CPU 动态嵌入后端，可选)","NVIDIA Merlin HierarchicalKV (GPU 动态嵌入后端，可选)","redis (可选后端)","horovod (半同步训练可选)",[52,14],[135,136,137,73,138],"tensorflow-recommenders-addons","sig-recommenders","recommender-system","dynamic-embedding","2026-03-27T02:49:30.150509","2026-04-08T05:20:38.877382",[142,147,152,157,162,167],{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},23791,"在使用多 GPU 训练时遇到 'CUDA error 2: out of memory' 错误，如何解决？","该错误通常由异步执行配置或显卡驱动问题引起。解决方案包括：1. 移除代码中的 `tf.config.experimental.set_synchronous_execution(False)` 设置；2. 更新 NVIDIA 显卡驱动程序。此外，请确保正确初始化 Horovod（使用 `hvd.init()`），否则也可能导致类似的底层错误。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fissues\u002F371",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},23792,"TensorFlow Serving 与 Recommenders-Addons 构建时出现 Bazel 版本冲突怎么办？","Recommenders-Addons (v0.7.2+) 支持使用 Bazel 6.4.0 进行编译，无需降级 TensorFlow 版本以匹配旧版 Bazel。如果遇到链接错误（如 `undefined reference to 'tsl::TfCheckOpHelperOutOfLine'`），请尝试移除针对 Windows 的特定代码段，并替换与 Bazel 版本相关的配置代码即可正常编译。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fissues\u002F452",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},23793,"动态嵌入（Dynamic Embedding）变量未包含在 model.trainable_variables 中导致无法梯度更新，如何处理？","这是一个已知行为。动态嵌入变量需要通过特定方式注册到模型的可训练变量列表中。如果直接使用 `tape.gradient` 发现梯度未应用，请检查是否正确使用了 `de.get_variable` 并将其封装在 Keras Layer 中。对于参数服务器（Parameter Server）策略，目前标准的 `min_max_variable_partitioner` 可能不直接支持动态嵌入的分片，需注意 Chief\u002FWorker 内存增长问题，这通常是由于哈希表频繁扩容导致的。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fissues\u002F41",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},23794,"在使用 tf.function 装饰器时调用 model.save() 报错 'return_trainable currently is not implemented'，如何解决？","当前版本在 `tf.function` 模式下尚未完全实现 `return_trainable` 功能。如果在 `de.embedding_lookup` 或 `de.embedding_lookup_sparse` 中设置了 `return_trainable=False` 仍然报错，建议暂时避免在保存模型时使用 `tf.function` 包裹相关逻辑，或者提供最小可复现代码向维护者反馈以获取特定版本的修复补丁。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fissues\u002F336",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},23795,"运行 MovieLens 示例 Demo 时启动脚本报错，是否有官方支持渠道？","部分 Demo（特别是涉及参数服务器 PS 支持的示例）可能尚未经过完整整理或存在已知 Bug。维护者表示会在有空时整理 PS 支持部分。对于新用户，建议关注官方是否建立了微信群等即时通讯群组以提高沟通效率，或者直接查看最新的主分支代码以获取修复后的示例。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fissues\u002F401",{"id":168,"question_zh":169,"answer_zh":170,"source_url":156},23796,"如何确认动态嵌入是否支持 Estimator 下的参数服务器策略（CPU 训练）？","虽然理论上支持，但在 Estimator 模式下使用参数服务器策略训练大型模型时，Chief 和 Worker 的内存占用可能会显著增加，这与使用 `fc.embedding_column` 基于离线统计分桶的行为不同。日志中频繁出现的 \"hashpower changed\" 和 \"another expansion is on-going\" 表明哈希表正在不断扩容，这可能影响性能。目前 `partitioner` 参数对标准分片器的支持有限，需密切关注内存使用情况。",[172,177,182,187,192,197,202,207,212,217,222,227,232,237,242],{"id":173,"version":174,"summary_zh":175,"released_at":176},145346,"v0.8.1","## 发行说明\n这是 TensorFlow Recommenders-Addons v0.8.0 的补丁版本\n\n## 变更内容\n\n* [修复] 由于 pip 的限制，仅上传包含 tf 2.16.2 的 wheel 包 (#470) @jq\n\n## 感谢我们的贡献者\n\n@jq\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fcompare\u002Fv0.8.0...v0.8.1","2024-09-23T04:11:11",{"id":178,"version":179,"summary_zh":180,"released_at":181},145347,"v0.8.0","## 发布说明\n这是 TensorFlow Recommenders-Addons 的第 8 次发布。\n\n## 主要特性\n* [CI] 将版本切换至 0.8.0 并更新 README 文件 (#465) @jq\n* 使用 @platforms 替代 @bazel_tools\u002F\u002Fplatforms (#457) @LinGeLin\n* 支持 tf2.16.2 (#462) @jq\n* [修复] 针对 TensorFlow 版本和运行环境的一些兼容性补丁 (#461) @MoFHeka\n* 在 \u002F.github\u002Fworkflows 中将 actions\u002Fdownload-artifact 从 1 升级至 4.1.7 (#459) @dependabot\n* [功能] 合并 CPU 和 GPU 的 wheel 包 (#456) @jq\n* [修复] 升级至 tf 2.16.2 (#454) @jq\n* 修复：应为 TFRA 优化器设置 synchronous=True (#449) @jq\n* [修复] 添加 scope_name_prefix 选项以控制文件名大小 (#448) @jq\n* [修复] 添加 HkvHashTableExportWithScores 操作 (#447) @jq\n* [修复] 移除对 shadow var ID 的跟踪 (#446) @jq\n* [新功能] 添加 normalized_emb (#443) @jq\n* [修复] Horovod 示例及 GPU 单元测试 (#442) @jq\n* [修复] 未跟踪的常量张量会导致 Embedding 保存失败及其他 bug (#441) @MoFHeka\n\n## 感谢我们的贡献者\n\n@LinGeLin、@MoFHeka、@dependabot、@dependabot[bot] 和 @jq","2024-09-19T04:11:15",{"id":183,"version":184,"summary_zh":185,"released_at":186},145348,"v0.7.2","## 发布说明\n这是 TensorFlow Recommenders-Addons v0.7.x 版本的补丁版本。\n\n## 变更内容\n\n* [Bug Fix] 添加了针对 TensorShape.as_list 的 TensorFlow 补丁，以支持动态形状，由 @jq 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F438 中完成。\n\n\n## 感谢我们的贡献者\n\n@jq\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fcompare\u002Fv0.7.1...v0.7.2","2024-06-24T02:14:05",{"id":188,"version":189,"summary_zh":190,"released_at":191},145349,"v0.7.1","## 发行说明\n这是 TensorFlow Recommenders-Addons v0.7.x 的补丁版本\n\n## 变更内容\n\n* [功能] 在 all2all 中支持稀疏张量 (#428) @jq\n* [功能] 从 HKV bata 12 中添加新的设置 num_of_buckets_per_alloc。(#433) @MoFHeka\n* [文档] 添加了 hkv 淘汰策略的文档 (#431) @LinGeLin\n* [修复] 稀疏张量在急切模式下应传递名称 (#427) @jq\n* [文档] 更新了关于 bf16 的 README 文档 (#424) @rhdong\n\n## 感谢我们的贡献者\n\n@LinGeLin、@MoFHeka、@jq 和 @rhdong\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fcompare\u002Fv0.7.0...v0.7.1","2024-06-20T02:36:51",{"id":193,"version":194,"summary_zh":195,"released_at":196},145350,"v0.7.0","## 发行说明\n这是 TensorFlow Recommenders-Addons 的第 7 次发布。\n\n## 主要特性：\n* [新功能] 在 FieldWiseEmbedding 和 SquashedEmbedding 中支持唯一性，由 @rhdong 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F311 中实现。\n* [新功能] 添加了 TensorFlow Serving 配置的 Shell 脚本，由 @rhdong 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F339 中实现。\n* [新功能] 增加了对 TensorFlow 2 策略分布式训练以及 Horovod AllToAll 同步分布式训练的支持。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F347 中实现。\n* 修复了一些类型错误，由 @fuhailin 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F354 中完成。\n* [新功能] 通过在 tf_save_restore_patch.py 中添加覆盖保存函数的补丁，使使用 HvdAllToAllEmbedding 时保存模型更加容易。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F362 中实现。\n* [新功能] 兼容 TensorFlow 2.11.0 之后的版本。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F331 中实现。\n* [新功能] 通过添加 HKV 源代码，增加了对 HKV 的支持。由 @LinGeLin 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F377 中实现。\n* [特性] 兼容 TensorFlow 2.13 及以下版本，并修复了一些 HKV 功能。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F378 中实现。\n* [新功能] 兼容 TensorFlow 2.15，由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F386 中实现。\n* [新功能] 在 Redis 和 CPU 表后端中增加了 bfloat16 值类型的支持。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F419 中实现。\n* [新功能] 添加了 macOS Apple Silicon 构建流水线，由 @poinwater 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F422 中实现。\n* [新功能] 尝试兼容 Keras 3 的优化器设计，并支持 CUDNN 9.0+。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F392 中实现。\n* [新功能] 增加对更多 HKV 策略的支持，由 @LinGeLin 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F389 中实现。\n* [新功能] 为配置 HKV 添加了 reserved_key_start_bit 选项，由 @jq 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F408 中实现。\n* [新功能] 公开了 ragged_embedding_ops，用于 safe_embedding_lookup_sparse，由 @jq 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F410 中实现。\n\n## 错误修复：\n* [修复] 修复了一些核心转储问题，并使 CUDA 流的使用更加合理。同时修复了无效的检查点设置。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F328 中完成。\n* 修复：de.save_to_file_system 在 Estimator 中无法正常工作，由 @PWZER 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F329 中修复。\n* [修复] 修复了 Redis 后端的同步训练错误，由 @fuhailin 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F360 中完成。\n* [修复] 修复了加载 KV 文件时的若干 bug，并使 Horovod 的保存函数可以独立调用，而不会影响原始的保存函数。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F364 中完成。\n* [修复] 当 Horovod 导入失败时，DEHvdCheckpoint 会失败。由 @MoFHeka 在 https:\u002F\u002Fgithub.","2024-06-02T21:40:58",{"id":198,"version":199,"summary_zh":200,"released_at":201},145351,"v0.4.1","# 发布说明\n这是 TensorFlow Recommenders-Addons v0.4.x 的补丁版本。\n\n## 变更内容\n* 由 @Lifann 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F306\u002F 中提出的关于禁用 bp_v2 的更新逻辑被反转。\n  - 此优化可以提升 AUC 指标。因此，我们建议您进行更新。\n  - 该优化仅适用于会话图模式，Keras API 不受其影响。\n\n感谢 @Lifann 的发现与修复！","2023-04-04T07:14:36",{"id":203,"version":204,"summary_zh":205,"released_at":206},145352,"v0.3.2","# 发布说明\n这是 TensorFlow Recommenders-Addons v0.3.x 的补丁版本。\n\n## 变更内容\n* 由 @Lifann 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F306\u002F 中修复了禁用 bp_v2 的更新逻辑。\n  - 此优化可以提升 AUC 指标。因此我们建议您进行更新。\n  - 该优化仅适用于会话图模式，Keras API 不受影响。\n\n感谢 @Lifann 的发现与修复！","2023-04-03T05:50:58",{"id":208,"version":209,"summary_zh":210,"released_at":211},145353,"v0.6.0","## 发布说明\n这是 TensorFlow Recommenders-Addons 的第 6 次发布。\n\n## 主要功能或修复：\n* [修复] 由 @Lifann 在 #306 中修复了 bp_v2 中的反向更新逻辑。\n  - **此 Bug 修复至关重要，会影响 AUC 指标。因此我们强烈建议您尽快更新。**\n  - **相关 Bug 仅在同步训练的图模式下出现，而使用 eager 模式的 Keras 不受影响。**\n* [新功能] 由 @rhdong 在 #311 中为 FieldWiseEmbedding 和 SquashedEmbedding 添加了对唯一值的支持。\n* [新功能] 由 @rhdong 在 #309 中为 `keras.layers.BasicEmbedding` 添加了 `unique` 参数。\n* [新功能] 由 @MoFHeka 在 #305 中添加了通过独立保存文件来扩展和缩减分布式训练中表数量的功能。\n* [修复] 修复了当 checkpoint 参数为 False 时，self._saveable_fn 可能不存在的错误。由 @MoFHeka 在 #310 中完成。\n* [修复] 修复了 Redis 表的单元测试（#308），由 @LinGeLin 完成。\n* [修复] 由 @acmore 在 #299 中修复了 rehash 可能不会被触发的 Bug。\n* [CI] 由 @LinGeLin 在 #298 中移除了构建警告：“类型限定符在强制转换类型上没有意义”。\n* [修复] 由 @WangShengguang 在 #294 中移除了冗余代码。\n* [修复] 修复了 int32-float 类型未注册表内核的问题。由 @rhdong 在 #293 中完成。\n\n## 感谢我们的贡献者\n\n@Lifann、@LinGeLin、@MoFHeka 和 @rhdong\n\n## 新贡献者\n* @WangShengguang 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F294 中做出了首次贡献。\n* @LinGeLin 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F298 中做出了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fcommits\u002Fv0.6.0","2023-03-28T13:05:58",{"id":213,"version":214,"summary_zh":215,"released_at":216},145354,"v0.5.1","# 发布说明\n这是 TensorFlow Recommenders-Addons v0.5.0 的一个补丁版本。\n\n## 变更内容\n* 由 @Lifann 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F306\u002F 中修复的禁用 bp_v2 的更新逻辑反转问题\n  - 此优化可以提升 AUC 指标。因此我们建议您进行更新。\n  - 该优化仅在会话图模式下生效，Keras API 不受其影响。\n\n感谢 @Lifann 的发现与修复！","2023-03-11T10:37:06",{"id":218,"version":219,"summary_zh":220,"released_at":221},145355,"v0.5.0","# 发布说明\n这是 TensorFlow Recommenders-Addons 的第 5 次发布\n## 主要特性：\n- `tfra.dynamic_embedding`\n\n    - 在 GPU 上新增 `int64-int64` 键值类型。由 @Lifann 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F240 中实现。\n    - 新增 `HMACCUM` Redis 模块，并在 Redis 实现中启用 BPV2。由 @thorneliu 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F234 中完成，[README](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fthird_party\u002Fredis_module\u002FREADME.md)。\n    - 向 Redis 后端配置中添加 `redis_hash_tags_hypodispersion` 和 `using_hash_storage_slice`。同时修改了 `redis_connection_mode` 配置项，现在当 `redis_connection_mode = 2` 时为单机模式。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F241 中完成，[指南](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fr0.5\u002Ftensorflow_recommenders_addons\u002Fdynamic_embedding\u002Fpython\u002Fops\u002Fredis_table_ops.py#L95)。\n    - 支持从 HDFS 保存和加载 cuckoo 哈希表。由 @luliyucoordinate 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F257 中实现。\n    - 新增嵌入表压缩脚本。由 @xiangzez 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F261 中完成，[README](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Ftree\u002Fmaster\u002Fdemo\u002Fdynamic_embedding\u002Fmovielens-100k-estimator-with-fp16-compress)。\n    - 【优化】避免在 `Remove` 和 `ImportValues` 函数的输入已经是设备变量时重新分配和复制设备内存。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F279 中完成。\n    - 使 HDFS 功能支持 S3，并与 `tensorflow-io` 和 `TensorFlow\u003C=2.6` 兼容。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F281 中实现。\n    - 在 CPU 上新增对 `bfloat16` 值类型的支持。由 @xiangzez 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F268 中完成。\n\n## 变更内容\n* 【修复】将演示中的 ‘horovod_synchronous’ 修正为 ‘synchronous’。由 @rhdong 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F233 中完成。\n* 在 GPU 上新增 int64-int64 键值组合支持。由 @Lifann 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F240 中完成。\n* 【功能】新增 HMACCUM Redis 模块，并在 Redis 实现中启用 BPV2。由 @thorneliu 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F234 中完成。\n* 【功能】向 Redis 后端配置中添加 redis_hash_tags_hypodispersion 和 using_hash_storage_slice。同时修改 redis_connection_mode 配置项，现在当 redis_connection_mode = 2 时为单机模式。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F241 中完成。\n* 修复开发容器问题。由 @rhdong 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F248 中完成。\n* 【修复】修复了因 lambda 可能捕获带有错误地址的 thread_context 引用而导致的段错误。由 @MoFHeka 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F249 中完成。\n* 【修复】停止在开发 Docker 容器中自动更新 Bazel。由 @rhdong 在 https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F250 中完成。\n* 【重构】清理了一些警告信息。由 @rhdong 在 https:\u002F\u002Fgithub.c","2022-11-08T07:59:26",{"id":223,"version":224,"summary_zh":225,"released_at":226},145356,"v0.4.0","# Release Notes\r\nThis is the 4th release of TensorFlow Recommenders-Addons\r\n## Main Features:\r\n- `tfra.dynamic_embedding`\r\n\r\n    - Support keras style programming in eager mode and enable `tf.function` grammar (#196), [Demo](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Ftree\u002Fr0.4\u002Fdemo\u002Fdynamic_embedding\u002Famazon-video-games-keras-eager) @Lifann\r\n    - Support warm-start in `tfra.dynamic_embedding` (#221), [Demo](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Ftree\u002Fr0.4\u002Fdemo\u002Fdynamic_embedding\u002Fmovielens-100k-estimator-with-warmup) @dakabang @Mr-Nineteen \r\n    - Support quasi-synchronous training based on Horovod (#205), [Demo](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Ftree\u002Fr0.4\u002Fdemo\u002Fdynamic_embedding\u002Fmovielens-100k-sync-estimator-with-horovod) @a6802739\r\n      - Synchronous training for dense weights\r\n      - Quasi-synchronous training for sparse weights\r\n    - Support Apple M1(ARM64) on MacOS (#214), [Guide](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons#apple-silicon-support-beta-release) @poinwater\r\n    - Add `storage_slice_import` parameter on Redis for easy rehashing table. (#197) @MoFHeka \r\n    - Add supported key-value type(`int32`, `float32`) for GPU @rhdong \r\n\r\n## What's Changed\r\n* [Doc]Add Apple Silicon installation instruction & fix typo (#228) @poinwater\r\n* [Doc] Update api docs (#229) @Lifann\r\n* [Doc] update readme (#224) @rhdong\r\n* Support keras style programming in eager mode and enable tf.function (#196) @Lifann\r\n* Add patch to tensorflow-docs for pretty on top link (#223) @Lifann\r\n* Support warm-start in tfra.dynamic_embedding (#221) @dakabang\r\n* [fix] Fix an issue where tf_patch.py failed in TF >= 2.6.x. (#222) @MoFHeka\r\n* [Feat]support horovod sync train (#205) @a6802739\r\n* [fix] add mpi & hvd installation to macOS CI and cpu_tests (#219) @rhdong\r\n* [feat]support Mac m1 devices (#214) @poinwater\r\n* [Feat]Remove the lock when choosing the thread context. (#216) @MoFHeka\r\n* [CI] add openmpi and horovod to base_install docker. (#210) @rhdong\r\n* [fix]Avoid Floating point exception (core dumped) when using RedisTable by empty ids inputs. (#206) @MoFHeka\r\n* [fix]__version__ is always \"v0.1.0\" (#208) @rhdong\r\n* [CI] Install RocksDb and its dependency to CI docker image. (#204) @rhdong\r\n* [fix] embedding variable graph mode example  (#189) @Nov11\r\n* [demo] add movielens-100k-estimator-with-warmup (#203) @Mr-Nineteen\r\n* [fix] Updated rules_foreign_cc from 0.0.9 to 0.6.0 (#202) @poinwater\r\n* [CI] remove CI on TF1.15.2 (#201) @rhdong\r\n* [feat] Add storage_slice_import parameter for easy rehashing table. (#197) @MoFHeka\r\n* [CI]after github action updated, we cancel python3.6 for MacOS (#194) @rhdong\r\n* Do not batch reduce as keras optimzer already does. (#183) @acmore\r\n* [fix]Compile compatibility to TF2.6. Add '-lrt' for Redis backend. Fix FindWithExist function in Redis backend. (#191) @MoFHeka\r\n* [feat] add supported key-value type(int32, float32) for GPU (#188) @rhdong\r\n* [fix]Fix misprocessing of \"CLUSTER NODES\" return (#185) @MoFHeka\r\n* [Fix]change 'KEYS' command in GetKeyBucketsAndOptimizerParamsWithName function to 'SCAN' command (#180) @MoFHeka\r\n\r\n## Thanks to our Contributors\r\n@Lifann, @MoFHeka, @Mr-Nineteen, @Nov11, @a6802739, @acmore, @dakabang, @poinwater, @rhdong, @zhangyafeikimi \r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fcommits\u002Fv0.4.0\r\n","2022-03-30T04:55:26",{"id":228,"version":229,"summary_zh":230,"released_at":231},145357,"v0.3.1","# Release Notes\r\nThis is a patch version for TensorFlow Recommenders-Addons v0.3.0\r\n\r\n## What's Changed\r\n* [fix] Illegal Instruction error on AMD CPUs by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F176\u002F\r\n","2021-10-27T06:45:02",{"id":233,"version":234,"summary_zh":235,"released_at":236},145358,"v0.3.0","# Release Notes\r\nThis is the 3rd release of TensorFlow Recommenders-Addons\r\nMain Features:\r\n- `tfra.dynamic_embedding`\r\n    - Support Redis as Key-Value Backend by @MoFHeka , [demo](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Ftree\u002Fmaster\u002Fdemo\u002Fdynamic_embedding\u002Fmovielens-100k-estimator-redis), [doc](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdocs\u002Fapi_docs\u002Ftfra\u002Fdynamic_embedding\u002FRedisBackend.md)\r\n    - Support bpv2 (update de by adding delta instead of setting) by @hxfxjun @rhdong , [demo](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdemo\u002Fdynamic_embedding\u002Fbpv2\u002FREADME.md)  \r\n    - Add `Clear` API for `dynamic_embedding.Variable` by @yuanqingsunny , [PR](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F100)\r\n- `tfra.embedding_variable`\r\n    - Support `tf.fixed_size_partitioner` by @qqsun8819 \r\n\r\n## What's Changed\r\n* add dynamic_embedding.Variable clear by @yuanqingsunny in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F100\r\n* [doc] add DynamicEmbeddingOptimizer to rfc by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F101\r\n* [doc-fix]add TF_VERSION to env. by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F106\r\n* [fix] Import of GPUHashTable should clear firstly. by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F108\r\n* [fix] style guide spell error by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F120\r\n* [feat] add Accum and FindWithExists APIs for hashtable by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F116\r\n* [fix] fix syntax error in  EmbeddingVariable  tutorial by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F127\r\n* [fix]  fix runtime error in EmbeddingVariable tutorial for graph mode by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F129\r\n* [fix] embedding variable is_initialized not executed  in graph mode by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F130\r\n* Fix ktype not set in embedding variable tutorial by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F131\r\n* Fix embedding variable tutorial notebook format error by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F132\r\n* [feat] bpv2 (update de by adding delta instead of setting) by @nrailgun in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F133\r\n* Support Keras APIs and fix save-restore issue in TF2 by @Lifann in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F119\r\n* EmbeddingVariable add local and distributed examples by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F141\r\n* Doc: add instruction for sign git commit for PR by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F142\r\n* [demo] move ev example to demo. by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F144\r\n* Fix bug: incompatible jobs with explicit placement. by @Lifann in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F145\r\n* EmbeddingVarialbe support partitioner by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F140\r\n* Support DynamicEmbeddingOptimizer bp_v2 parameter Settings, solve the… by @hxfxjun in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F148\r\n* embedding_variable.get_variable support int32 key type by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F149\r\n* Revert \"Add Redis backend feature to TFRA\" by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F154\r\n* correct ev doc link by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F152\r\n* [feat]Add Redis backend feature to TFRA  by @MoFHeka in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F157\r\n* add qqsun8819 as code owner by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F161\r\n* fix cleate_slot_var import xla_sharding error in tf >=2.5 by @qqsun8819 in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F160\r\n* [fix] Added more type and value check for Redis backend config file to prevent unconditional setting. by @MoFHeka in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F159\r\n* [fix]Github auto merge hide the email address, revert and push the right address by @MoFHeka in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F163\r\n* [feat] Update  dependent & CI & readme for TF version 2.5.1 by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F165\r\n* [fix] CI fail on TF2.4.1 by @rhdong in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F168\r\n* [hotfix]I forget to modify RestoreFromDisk and HscanGetKeysValsInBucket in cluster mode code by @MoFHeka in https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fpull\u002F166\r\n\r\n## Thanks to our Contributors\r\n* @Lifann \r\n* @yuanqingsunny \r\n* @qqsun8819 \r\n* @nrailgun\r\n* @hxfxjun\r\n* @MoFHeka \r\n* @rhdong \r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fcommits\u002Fv0.3.0","2021-10-14T13:00:07",{"id":238,"version":239,"summary_zh":240,"released_at":241},145359,"v0.2.0","# Release Notes\r\nThis is the 2nd release of TensorFlow Recommenders-Addons\r\nMain Features:\r\n- `tfra.dynamic_embedding`\r\n    - Support Hashtable on GPU and some GPU OPs. \r\n    - Support TensorFlow 1.15.2  \r\n    - Add [`tfra.dynamic_embedding.embedding_lookup_unique`](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdocs\u002Fapi_docs\u002Ftfra\u002Fdynamic_embedding\u002Fembedding_lookup_unique.md) API\r\n    - Improved the documentation and [demo](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Ftree\u002Fmaster\u002Fdemo\u002Fmovielens-100k-estimator)\r\n- `tfra.embedding_variable`\r\n    - Support save\u002Frestore\r\n\r\n## Release Notes\r\n\r\n* [CI]change version to 0.2.0 (#91) @rhdong\r\n* [Feat] compatible with TF1.15.2 (#90) @rhdong\r\n* [Feat] Add GPU operator: sparse_fill_empty_rows and sparse_reshape (#87) @funsimple\r\n* [CI]release-drafter fail for shortened SHA (#89) @rhdong\r\n* [CI]Support TF Serving compilation (#85) @Mr-Nineteen\r\n* [Doc]Update api_docs for dynamic_embedding (#82) @Lifann\r\n* [Doc]update readme, added the way to compile GPU Serving. (#83) @Mr-Nineteen\r\n* [Feat]GPU supports Unified Memory (#79) @Mr-Nineteen\r\n* [Feat]Add GPU hashtable and GPU workflow (#78) @rhdong\r\n* [Feat]Support sparse_segment_sum ops on GPU. (#55) @Lifann\r\n* [Fix] optimizer slots have 1\u002FN init_size of primary var. (#75) @rhdong\r\n* [feat] add Hashtable On GPU (#74) @rhdong\r\n* [demo]add estimator demo (#72) @tracyxzh001\r\n* [feat] add dynamic_embedding.embedding_lookup_unique API. (#62) @funsimple\r\n* [Demo] add a distributed training demo on movielens for dynamic_embedding (#61) @rhdong\r\n* [Fix] optimized hashtable not work (#66) @rhdong\r\n* [CI]Add style guide for bazel BUILD files. (#58) @Lifann\r\n* [Opt]Remove ‘LaunchTensorsInsert num_worker_threads’ log printing. (#63) @Mr-Nineteen\r\n* [Fix]Fix bazel build error with cuda (#53) @Lifann\r\n* [opt] reduce memory consuming of de.Variable and support string type Keys and Values. (#57) @rhdong\r\n* [fix] wrong TF version warning (#54) @rhdong\r\n* For LaunchTensorsInsert, num_worker_threads is used only when TFRA_NUM_WORKER_THREADS_FOR_LOOKUP_TABLE_INSERT env var is set to k, where k>0 and k\u003Ctf current number of cpu worker threads. Otherwise, nothing will change. (#51) @Mr-Nineteen\r\n* [doc-fix] optimizer apply updates on TrainableWrapper. (#46) @wuxianxingkong\r\n* [doc]add API doc for dynamic_embedding.DynamicEmbeddingOptimizer (#50) @rhdong\r\n* [fix]batch port bot error (#40) @rhdong\r\n* [doc-fix] wrap the optimizer in tfra.dynamic_embedding.DynamicEmbeddingOptimizer (#43) @funsimple\r\n* [Feat]EmbeddingVariable support save\u002Frestore (#39) @candyzone\r\n\r\n## Thanks to our Contributors\r\n@Lifann, @Mr-Nineteen, @candyzone, @funsimple, @rhdong, @tracyxzh001, @wuxianxingkong\r\nWe also want to extend a thank to [@郁凡](https:\u002F\u002Fgithub.com\u002FHWZealot) from NVIDIA Co. who have helped with HashTable, and Nvidia China team that helped implement SparseFillEmptyRowsOP and SparseReshapeOP On GPU!","2021-06-04T06:37:17",{"id":243,"version":244,"summary_zh":245,"released_at":246},145360,"v0.1.0","# Release Notes\r\nThis is the first release of TensorFlow Recommenders-Addons!\r\n\r\n# Change Log\r\n- Add [tfra.dynamic_embedding](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdocs\u002Fapi_docs\u002Fdynamic_embedding.md)\r\n- Add [tfra.embedding_variable](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Frecommenders-addons\u002Fblob\u002Fmaster\u002Fdocs\u002Ftutorials\u002Fembedding_variable_tutorial.ipynb)\r\n\r\n# Thank You to All Our Contributors\r\n\r\n- [Cheng Chuan](https:\u002F\u002Fgithub.com\u002Fccsquare)\r\n- [Ding Chen](https:\u002F\u002Fgithub.com\u002Fcandyzone)\r\n- [Fan Guifeng](https:\u002F\u002Fgithub.com\u002Ffunsimple)\r\n- [Li Fan](https:\u002F\u002Fgithub.com\u002FLifann)\r\n- [Rong Haidong](https:\u002F\u002Fgithub.com\u002Frhdong)\r\n- [Wang Dongxin](https:\u002F\u002Fgithub.com\u002FMr-Nineteen)\r\n\r\n## We also want to extend a thank you to the Google team members who have helped with CI setup and reviews!","2021-03-25T05:32:47"]