[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-tensorflow--runtime":3,"tool-tensorflow--runtime":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":80,"owner_twitter":79,"owner_website":81,"owner_url":82,"languages":83,"stars":104,"forks":105,"last_commit_at":106,"license":107,"difficulty_score":108,"env_os":109,"env_gpu":110,"env_ram":111,"env_deps":112,"category_tags":122,"github_topics":79,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":123,"updated_at":124,"faqs":125,"releases":155},3620,"tensorflow\u002Fruntime","runtime","A performant and modular runtime for TensorFlow","runtime（又称 TFRT）是 TensorFlow 生态中一款全新的高性能模块化运行时引擎。它旨在构建一个统一且可扩展的基础设施层，致力于在各种专用硬件上实现顶尖的执行效率。\n\n传统 TensorFlow 运行时在处理复杂模型或特定硬件加速时，往往面临多线程利用率不足或异步支持不够灵活的挑战。runtime 通过深度优化底层资源调度，有效解决了这些问题。它能够高效利用多核主机 CPU，全面支持完全异步编程模型，并显著降低了系统开销，从而为模型训练和推理提供更流畅的性能表现。\n\n这款工具特别适合三类人群：希望实验复杂新模型或添加自定义算子的研究人员；追求生产环境中模型服务更高性能的应用开发者；以及需要将边缘设备或数据中心硬件接入 TensorFlow 生态的硬件制造商。当然，对机器学习底层基础设施感兴趣的技术爱好者也能从中获益。\n\n其核心技术亮点在于引入了基于 MLIR（多级中间表示）的图编译器，能够将 TensorFlow 图优化并编译为专有的二进制可执行格式（BEF），实现了从高层逻辑到底层硬件指令的高效转换。需要注意的是，目前 runtime 仍处于早期开发阶段，主要面向开发","runtime（又称 TFRT）是 TensorFlow 生态中一款全新的高性能模块化运行时引擎。它旨在构建一个统一且可扩展的基础设施层，致力于在各种专用硬件上实现顶尖的执行效率。\n\n传统 TensorFlow 运行时在处理复杂模型或特定硬件加速时，往往面临多线程利用率不足或异步支持不够灵活的挑战。runtime 通过深度优化底层资源调度，有效解决了这些问题。它能够高效利用多核主机 CPU，全面支持完全异步编程模型，并显著降低了系统开销，从而为模型训练和推理提供更流畅的性能表现。\n\n这款工具特别适合三类人群：希望实验复杂新模型或添加自定义算子的研究人员；追求生产环境中模型服务更高性能的应用开发者；以及需要将边缘设备或数据中心硬件接入 TensorFlow 生态的硬件制造商。当然，对机器学习底层基础设施感兴趣的技术爱好者也能从中获益。\n\n其核心技术亮点在于引入了基于 MLIR（多级中间表示）的图编译器，能够将 TensorFlow 图优化并编译为专有的二进制可执行格式（BEF），实现了从高层逻辑到底层硬件指令的高效转换。需要注意的是，目前 runtime 仍处于早期开发阶段，主要面向开发者进行技术探索和贡献，尚未达到大规模通用生产的成熟度。","# TFRT: A New TensorFlow Runtime\n\nTFRT is a new TensorFlow runtime. It aims to provide a unified, extensible\ninfrastructure layer with best-in-class performance across a wide variety of\ndomain specific hardware. It provides efficient use of multithreaded host CPUs,\nsupports fully asynchronous programming models, and focuses on low-level\nefficiency.\n\nTFRT will benefit a broad range of users, but it will be of particular interest\nto you if you are a:\n\n*   Researcher looking to experiment with complex new models and add custom\n    operations to TensorFlow\n*   Application developer looking for improved performance when serving models\n    in production\n*   Hardware maker looking to plug hardware into TensorFlow, including edge and\n    datacenter devices\n\n...or you are simply curious about cool ML infrastructure and low-level runtime\ntechnology!\n\nTo learn more about TFRT’s early progress and wins, check out our\n[Tensorflow Dev Summit 2020 presentation](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=15tiQoPpuZ8)\nwhere we provided a performance benchmark for small-batch GPU inference on\nResNet 50, and our\n[MLIR Open Design Deep Dive presentation](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1fkLJuVP-tIk4GENBu2AgemF3oXYGr2PB)\nwhere we provided a detailed overview of TFRT’s core components, low-level\nabstractions, and general design principles.\n\n**Note:** TFRT is an early stage project and is not yet ready for general use.\n\n## Getting started\n\n**TLDR:** This section describes how to set up a development environment for\nTFRT, as well as instructions to build and test TFRT components.\n\nTFRT currently supports Ubuntu-16.04. Future supported platforms include MacOS,\nWindows, etc. Bazel and clang are required to build and test TFRT. NVIDIA's CUDA\nToolkit and cuDNN libraries are required for the GPU backend.\n\nTo describe the TFRT build and test workflows, we will build and run the\nfollowing binaries for graph execution.\n\nRecall from our Dev Summit presentation that for graph execution, a TensorFlow\nuser passes into TFRT a TensorFlow graph created via high-level TensorFlow APIs,\nand TFRT then calls the [MLIR](https:\u002F\u002Fwww.tensorflow.org\u002Fmlir)-based graph\ncompiler to optimize and lower the graph into\n[BEF](documents\u002Fbinary_executable_format.md), a Binary Executable Format for\nTFRT graph execution (MLIR is the compiler infrastructure that we use to\nrepresent TFRT host programs). The blue arrows in the simplified TensorFlow\ntraining stack diagram below show this flow.\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"documents\u002Fimg\u002FTFRT_overview.svg\" alt=\"TFRT Overview\" width=\"800\">\n\u003C\u002Fdiv>\n\nThe two binaries introduced next focus on the backend of the graph execution\nworkflow. After the graph compiler has optimized the TensorFlow graph and\nproduced a low-level TFRT Host Program represented in MLIR, `tfrt_translate`\ngenerates a `BEF` file from that host program and `bef_executor` runs the `BEF`\nfile. The progression from TFRT Host Program to `bef_executor` via\n`tfrt_translate` is depicted in the expanded TensorFlow training stack diagram\nbelow. Note that the blue arrow between TFRT Host Program and `BEF` file\nrepresents `tfrt_translate`. Both programs are built in the `tools` directory.\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"documents\u002Fimg\u002FBEF_conversion.svg\" alt=\"BEF Conversion\" width=\"480\">\n\u003C\u002Fdiv>\n\n#### tfrt_translate\n\nThe `tfrt_translate` program does round trip translation between MLIR and BEF,\nsimilar to an assembler and disassembler.\n\n#### bef_executor\n\nThe `bef_executor` program is the execution driver of `BEF` files. It reads in a\n`BEF` file, sets up runtime, and asynchronously executes function(s) in that\nfile.\n\n### Prerequisites\n\n#### Install Bazel\n\nTo build TFRT, you need to install Bazel. TFRT is built and verified with Bazel\n4.0. Follow\n[the Bazel installation instructions](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Finstall-ubuntu.html)\nto install Bazel. Verify the installation with\n\n```shell\n$ bazel --version\nbazel 4.0.0\n```\n\n#### Install clang\n\nFollow [the clang installation instructions](https:\u002F\u002Fapt.llvm.org\u002F) to install\nclang. The automatic installation script that installs clang, lldb, and lld, is\nrecommended. TFRT is built and verified with clang 11.1.\n\nIf you have multiple versions of clang installed, ensure that the right version\nof clang is the default. On Ubuntu based systems, you can use\n`update-alternatives` to select the default version. The following example\ncommands assume you installed clang-11:\n\n```shell\n$ sudo update-alternatives --install \u002Fusr\u002Fbin\u002Fclang clang \u002Fusr\u002Fbin\u002Fclang-11 11\n$ sudo update-alternatives --install \u002Fusr\u002Fbin\u002Fclang++ clang++ \u002Fusr\u002Fbin\u002Fclang++-11 11\n```\n\nVerify the installation with\n\n```shell\n$ clang --version\nclang version 11.1.0\n```\n\n#### Install libstdc++\n\nTFRT requires libstdc++8 or greater. Check clang's selected version with\n\n```shell\n$ clang++ -v |& grep \"Selected GCC\"\nSelected GCC installation: \u002Fusr\u002Fbin\u002F..\u002Flib\u002Fgcc\u002Fx86_64-linux-gnu\u002F10\n```\n\nIn the example above, the *10* at the end of the path indicates that clang will\nuse libstdc++\u003Cem>10\u003C\u002Fem>, which is compatible with TFRT.\n\nIf you need to upgrade, the easiest way is to install gcc-8. Run the following\ncommand to install:\n\n```shell\n$ sudo add-apt-repository -y ppa:ubuntu-toolchain-r\u002Ftest\n$ sudo apt-get update\n$ sudo apt-get install -y gcc-8 g++-8\n```\n\nTo verify installation, re-run the `clang++ -v` check above.\n\n#### GPU prerequisites\n\n**Note:** You can skip this section if you don't want to build the GPU backend.\nRemember to exclude `\u002F\u002Fbackends\u002Fgpu\u002F...` from your Bazel target patterns though.\n\nBuilding and running the GPU backend requires installing additional components.\n\nInstall clang Python bindings using pip with\n\n```shell\n$ pip install libclang\n```\n\nInstall NVIDIA's CUDA Toolkit v11.2 (see\n[installation guide](https:\u002F\u002Fdocs.nvidia.com\u002Fcuda\u002Fcuda-installation-guide-linux)\nfor details) in a single directory from NVIDIA’s `.run` package with\n\n```shell\n$ wget http:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002F11.2.2\u002Flocal_installers\u002Fcuda_11.2.2_460.32.03_linux.run\n$ sudo sh cuda_11.2.2_460.32.03_linux.run --toolkit --installpath=\u003Cpath>\n```\n\nRegister the path to CUDA shared objects with\n\n```shell\n$ sudo echo '\u003Cpath>\u002Flib64' > '\u002Fetc\u002Fld.so.conf.d\u002Fcuda.conf'\n$ sudo ldconfig\n```\n\nInstall NVIDIA's cuDNN libraries (see\n[installation guide](http:\u002F\u002Fdocs.nvidia.com\u002Fdeeplearning\u002Fsdk\u002Fcudnn-install) for\ndetails) with\n\n```shell\n$ wget http:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fmachine-learning\u002Frepos\u002Fubuntu1604\u002Fx86_64\u002Flibcudnn8_8.0.4.30-1+cuda11.1_amd64.deb\n$ sudo apt install .\u002Flibcudnn8_8.0.4.30-1+cuda11.1_amd64.deb\n```\n\n**Note:** The above package is intended for CUDA 11.1, but is compatible with\nCUDA 11.2. TFRT is built and verified with cuDNN 8.1 for CUDA 11.2. Access to\nthat package requires a (free) NVIDIA developer account.\n\n### Building and running TFRT\n\nTo build TFRT, `cd` to the root directory (where `WORKSPACE` file is located) of\nthe TFRT workspace. A set of build configurations is in `.bazelrc` file. You can\ncreate a `user.bazelrc` in the repository root with extra Bazel configs that may\nbe useful. Build `tfrt_translate` and `bef_executor` with the following\ncommands:\n\n```shell\n$ bazel build \u002F\u002Ftools:bef_executor\n$ bazel build \u002F\u002Ftools:tfrt_translate\n```\n\nThe above commands build the binaries with `opt` compilation mode. Check\n[Bazel's documentation](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Fcommand-line-reference.html#build-options)\nfor more build options. Bazel will notify the output location at the end of a\nsuccessful build (default is `bazel-bin`).\n\nAfter `tfrt_translate` and `bef_executor` are built, run an `.mlir` program with\nthe following command:\n\n```shell\n$ bazel-bin\u002Ftools\u002Ftfrt_translate -mlir-to-bef path\u002Fto\u002Fprogram.mlir | bazel-bin\u002Ftools\u002Fbef_executor\n```\n\nTFRT provides a series of .mlir test programs. For example:\n\n```shell\n$ bazel-bin\u002Ftools\u002Ftfrt_translate -mlir-to-bef mlir_tests\u002Fbef_executor\u002Fasync.mlir | bazel-bin\u002Ftools\u002Fbef_executor\n```\n\nAny output will be printed out to the terminal.\n\n### Adding GPU support\n\nAdd `--config=cuda` to the Bazel command to link the GPU backend to the above\ntargets.\n\nCustom CUDA Toolkit locations can be specified with\n`--repo_env=CUDA_PATH=\u003Cpath>`. The default is `\u002Fusr\u002Flocal\u002Fcuda`.\n\n### Testing\n\nTFRT utilizes LLVM’s [LIT](https:\u002F\u002Fllvm.org\u002Fdocs\u002FCommandGuide\u002Flit.html)\ninfrastructure and\n[FileCheck](https:\u002F\u002Fllvm.org\u002Fdocs\u002FCommandGuide\u002FFileCheck.html) utility tool to\nconstruct MLIR-based check tests. These tests verify that some set of string\ntags appear in the test’s output. More introduction and guidelines on testing\ncan be found\n[here](https:\u002F\u002Fmlir.llvm.org\u002Fgetting_started\u002FTestingGuide\u002F#check-tests). An\nexample test is shown below:\n\n```c++\n\u002F\u002F RUN: tfrt_translate -mlir-to-bef %s | bef_executor | FileCheck %s\n\u002F\u002F RUN: tfrt_opt %s | tfrt_opt\n\n\u002F\u002F CHECK-LABEL: --- Running 'basic_tensor'\nfunc @basic_tensor() {\n  %c0 = tfrt.new.chain\n\n  %a = dht.create_uninitialized_tensor.i32.2 [3 : i64, 2 : i64]\n  %c1 = dht.fill_tensor_with_constant.i32 %a, %c0 0 : i32\n\n  \u002F\u002F CHECK: shape = [3, 2], values = [0, 0, 0, 0, 0, 0]\n  %c2 = dht.print_tensor %a, %c1\n\n  tfrt.return\n}\n```\n\nTo run a test, simply invoke `bazel test`:\n\n```shell\n$ bazel test \u002F\u002Fmlir_tests\u002Fbef_executor:basics.mlir.test\n```\n\nMost tests under `\u002F\u002Fbackends\u002Fgpu\u002F...` need to be built with `--config=cuda` so\nthat the GPU backend is linked to the bef_executor:\n\n```shell\n$ bazel test --config=cuda \u002F\u002Fbackends\u002Fgpu\u002Fmlir_tests\u002Fcore_runtime:get_device.mlir.test\n```\n\nUse Bazel\n[target patterns](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Fguide.html#specifying-targets-to-build)\nto run multiple tests:\n\n```shell\n$ bazel test -- \u002F\u002F... -\u002F\u002Fthird_party\u002F... -\u002F\u002Fbackends\u002Fgpu\u002F...  # All CPU tests.\n$ bazel test --config=cuda \u002F\u002Fbackends\u002Fgpu\u002F...                 # All GPU tests.\n```\n\n### Next Steps\n\nTry our [tutorial](documents\u002Ftutorial.md) for some hands-on experience with\nTFRT.\n\nSee [host runtime design](documents\u002Ftfrt_host_runtime_design.md) for more\ndetails on TFRT's design.\n\n## Repository Overview\n\nThe three key directories under the TFRT root directory are\n\n*   `lib\u002F`: Contains core TFRT infrastructure code\n*   `backends\u002F`: Contains device specific infrastructure and op\u002Fkernel\n    implementations\n*   `include\u002F`: Contains public header files for core TFRT infrastructure\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd>\u003Cstrong>Top level directory\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Cstrong>Sub-directory\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Cstrong>Description\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>include\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT infrastructure public headers\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>lib\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT infrastructure common for host runtime and all device runtime\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>basic_kernels\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Common infrastructure kernels, e.g. control flow kernels\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>bef_executor\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>BEFFile and BEFExecutor implementation\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>bef_executor_driver\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Driver code for running BEFExecutor for an input MLIR file\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>bef_converter\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Converter between MLIR and BEF (bef_to_mlir and mlir_to_bef)\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>core_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT Core Runtime infrastructure\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>distributed_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT Distributed Runtime infrastructure\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>data\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT infrastructure for TF input pipelines\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>host_context\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Host TFRT data structure, e.g. HostContext, AsyncValue, ConcurrentWorkQueue\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>metrics\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>ML metric integration\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>support\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Basic utilities, e.g. hash_util, string_util\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>tensor\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Base Tensor class and host tensor implementations\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>test_kernels\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Testing kernel implementations\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>tracing\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Tracing\u002Fprofiling support\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>cpp_tests\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>C++ unit tests\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>mlir_tests\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>MLIR-based unit tests\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>utils\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>Miscellaneous utilities, such as scripts for generating test ML models.\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>tools\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>Binaries including bef_executor, tfrt_translate etc.\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>backends\u002Fcommon\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>Library shared for different backends, e.g. eigen, dnn_op_utils.h\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>ops\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Shared library for op implementations across devices, e.g. metadata functions\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>compat\u002Feigen\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Adapter library for eigen, used by multiple backends\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>utils\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Miscellaneous utilities, such as scripts for generating MLIR test code.\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>backends\u002Fcpu\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU device infra and CPU ops and kernels\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>include\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU related public headers\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fcore_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU core_runtime infra, e.g. cpu_device\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fops\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU ops\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fkernels\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU kernels\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>cpp_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU infra unit tests\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>mlir_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU mlir based tests\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>backends\u002Fgpu\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU infra and op\u002Fkernel implementations. We might split this directory into a separate repository at some point after the interface with the rest of TFRT infra becomes stable.\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>include\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU related public headers\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fcore_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU Core runtime infra\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fmemory\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU memory abstraction\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fstream\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU stream abstraction and wrappers\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Ftensor\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU tensor\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fops\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU ops\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fkernels\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU kernels\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fdata\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU kernels for input pipeline infrastructure\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>cpp_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU infra unit tests\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>mlir_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU mlir based tests\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>tools\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>Miscellaneous utilities\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Contribution guidelines\n\nIf you want to contribute to TFRT, be sure to review the\n[contribution guidelines](CONTRIBUTING.md). This project adheres to TensorFlow's\n[code of conduct](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftensorflow\u002Fblob\u002Fmaster\u002FCODE_OF_CONDUCT.md).\nBy participating, you are expected to uphold this code of conduct.\n\n**Note:** TFRT is currently not open to contributions. TFRT developers are\ncurrently developing workflows and continuous integration for accepting\ncontributions. Once we are ready, we will update this page.\n\n## Continuous build status\n\n[![Status](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-clang.svg)](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-clang.html)\n[![Status](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-gcc.svg)](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-gcc.html)\n\n## Contact\n\nSubscribe to the\n[TFRT mailing list](https:\u002F\u002Fgroups.google.com\u002Fa\u002Ftensorflow.org\u002Fd\u002Fforum\u002Ftfrt) for\ngeneral discussions about the runtime.\n\nWe use GitHub [issues](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues) to track\nbugs and feature requests.\n\n## License\n\n[Apache License 2.0](LICENSE)\n","# TFRT：全新的 TensorFlow 运行时\n\nTFRT 是一个全新的 TensorFlow 运行时，旨在提供统一且可扩展的基础架构层，在多种领域专用硬件上实现一流的性能。它能够高效利用多线程主机 CPU，支持完全异步的编程模型，并专注于低级别的效率优化。\n\nTFRT 将惠及广泛的用户群体，但如果您属于以下任何一类，可能会特别感兴趣：\n\n*   正在探索复杂新模型并希望向 TensorFlow 添加自定义操作的研究人员\n*   希望在生产环境中部署模型时提升性能的应用开发者\n*   计划将硬件集成到 TensorFlow 中的硬件制造商，包括边缘设备和数据中心设备\n\n…或者您只是对先进的机器学习基础架构和底层运行时技术充满好奇！\n\n要了解 TFRT 的早期进展与成果，请观看我们的 [TensorFlow 开发者峰会 2020 演示](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=15tiQoPpuZ8)，其中我们针对 ResNet 50 的小批量 GPU 推理任务进行了性能基准测试；以及我们的 [MLIR 开放设计深度解析演示](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1fkLJuVP-tIk4GENBu2AgemF3oXYGr2PB)，该演示详细介绍了 TFRT 的核心组件、底层抽象及总体设计原则。\n\n**注意：** TFRT 目前仍处于早期开发阶段，尚未准备好供广泛使用。\n\n## 快速入门\n\n**简而言之：** 本节将介绍如何为 TFRT 搭建开发环境，以及构建和测试 TFRT 组件的具体步骤。\n\nTFRT 当前支持 Ubuntu 16.04。未来还将支持 macOS、Windows 等平台。构建和测试 TFRT 需要 Bazel 和 clang 工具链。对于 GPU 后端，则需要 NVIDIA 的 CUDA Toolkit 和 cuDNN 库。\n\n为了说明 TFRT 的构建与测试流程，我们将编译并运行用于图执行的两个二进制文件。\n\n回顾我们在开发者峰会上的演示：在图执行过程中，TensorFlow 用户会将通过高级 TensorFlow API 创建的计算图传递给 TFRT，随后 TFRT 调用基于 MLIR 的图编译器对该图进行优化和降级，最终生成适用于 TFRT 图执行的 [BEF](documents\u002Fbinary_executable_format.md) 格式文件（MLIR 是我们用来表示 TFRT 主机程序的编译基础设施）。下图所示的简化 TensorFlow 训练栈中，蓝色箭头即展示了这一流程。\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"documents\u002Fimg\u002FTFRT_overview.svg\" alt=\"TFRT 概览\" width=\"800\">\n\u003C\u002Fdiv>\n\n接下来介绍的两个二进制文件专注于图执行工作流的后端部分。当图编译器完成 TensorFlow 计算图的优化，并将其转换为 MLIR 表示的低级别 TFRT 主机程序后，`tfrt_translate` 会从该主机程序生成 `BEF` 文件，而 `bef_executor` 则负责运行这个 `BEF` 文件。从 TFRT 主机程序经由 `tfrt_translate` 到 `bef_executor` 的完整流程，如下面展开的 TensorFlow 训练栈图所示。请注意，TFRT 主机程序与 `BEF` 文件之间的蓝色箭头代表了 `tfrt_translate` 的作用。这两个程序均位于 `tools` 目录下。\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"documents\u002Fimg\u002FBEF_conversion.svg\" alt=\"BEF 转换\" width=\"480\">\n\u003C\u002Fdiv>\n\n### tfrt_translate\n\n`tfrt_translate` 程序实现了 MLIR 与 BEF 之间的双向转换，类似于汇编器和反汇编器的功能。\n\n### bef_executor\n\n`bef_executor` 程序是 `BEF` 文件的执行驱动程序。它读取 `BEF` 文件，设置运行时环境，并异步执行文件中的一个或多个函数。\n\n### 先决条件\n\n#### 安装 Bazel\n\n要构建 TFRT，您需要先安装 Bazel。TFRT 使用 Bazel 4.0 版本进行构建和验证。请按照 [Bazel 安装指南](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Finstall-ubuntu.html) 安装 Bazel，并通过以下命令验证安装是否成功：\n\n```shell\n$ bazel --version\nbazel 4.0.0\n```\n\n#### 安装 clang\n\n请按照 [clang 安装指南](https:\u002F\u002Fapt.llvm.org\u002F) 安装 clang。推荐使用自动安装脚本同时安装 clang、lldb 和 lld。TFRT 使用 clang 11.1 版本进行构建和验证。\n\n如果您已安装多个版本的 clang，请确保正确版本被设为默认。在基于 Ubuntu 的系统上，可以使用 `update-alternatives` 来选择默认版本。以下示例假设您已安装 clang-11：\n\n```shell\n$ sudo update-alternatives --install \u002Fusr\u002Fbin\u002Fclang clang \u002Fusr\u002Fbin\u002Fclang-11 11\n$ sudo update-alternatives --install \u002Fusr\u002Fbin\u002Fclang++ clang++ \u002Fusr\u002Fbin\u002Fclang++-11 11\n```\n\n通过以下命令验证安装是否成功：\n\n```shell\n$ clang --version\nclang version 11.1.0\n```\n\n#### 安装 libstdc++\n\nTFRT 需要 libstdc++ 8 或更高版本。请检查 clang 所选的 GCC 版本：\n\n```shell\n$ clang++ -v |& grep \"Selected GCC\"\nSelected GCC installation: \u002Fusr\u002Fbin\u002F..\u002Flib\u002Fgcc\u002Fx86_64-linux-gnu\u002F10\n```\n\n在上述示例中，路径末尾的 *10* 表明 clang 将使用 libstdc++\u003Cem>10\u003C\u002Fem>,这与 TFRT 兼容。\n\n如果需要升级，最简单的方法是安装 gcc-8。运行以下命令进行安装：\n\n```shell\n$ sudo add-apt-repository -y ppa:ubuntu-toolchain-r\u002Ftest\n$ sudo apt-get update\n$ sudo apt-get install -y gcc-8 g++-8\n```\n\n再次运行 `clang++ -v` 检查以确认安装是否成功。\n\n#### GPU 先决条件\n\n**注意：** 如果您不打算构建 GPU 后端，可以跳过本节。不过，请务必在 Bazel 的目标模式中排除 `\u002F\u002Fbackends\u002Fgpu\u002F...`。\n\n构建和运行 GPU 后端需要额外安装一些组件。\n\n使用 pip 安装 clang 的 Python 绑定：\n\n```shell\n$ pip install libclang\n```\n\n从 NVIDIA 的 `.run` 安装包中，将 NVIDIA 的 CUDA Toolkit v11.2（详情参见 [安装指南](https:\u002F\u002Fdocs.nvidia.com\u002Fcuda\u002Fcuda-installation-guide-linux)）安装到指定目录：\n\n```shell\n$ wget http:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002F11.2.2\u002Flocal_installers\u002Fcuda_11.2.2_460.32.03_linux.run\n$ sudo sh cuda_11.2.2_460.32.03_linux.run --toolkit --installpath=\u003Cpath>\n```\n\n将 CUDA 共享库的路径添加到系统配置中：\n\n```shell\n$ sudo echo '\u003Cpath>\u002Flib64' > '\u002Fetc\u002Fld.so.conf.d\u002Fcuda.conf'\n$ sudo ldconfig\n```\n\n接着安装 NVIDIA 的 cuDNN 库（详情参见 [安装指南](http:\u002F\u002Fdocs.nvidia.com\u002Fdeeplearning\u002Fsdk\u002Fcudnn-install)）：\n\n```shell\n$ wget http:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fmachine-learning\u002Frepos\u002Fubuntu1604\u002Fx86_64\u002Flibcudnn8_8.0.4.30-1+cuda11.1_amd64.deb\n$ sudo apt install .\u002Flibcudnn8_8.0.4.30-1+cuda11.1_amd64.deb\n```\n\n**注意：** 上述软件包专为 CUDA 11.1 设计，但也可兼容 CUDA 11.2。TFRT 使用 cuDNN 8.1（适用于 CUDA 11.2）进行构建和验证。获取该软件包需注册一个（免费的）NVIDIA 开发者账号。\n\n### 构建和运行 TFRT\n\n要构建 TFRT，请使用 `cd` 命令进入 TFRT 工作区的根目录（即包含 `WORKSPACE` 文件的目录）。`.bazelrc` 文件中包含一组构建配置。您可以在仓库根目录下创建一个 `user.bazelrc` 文件，添加可能有用的额外 Bazel 配置。使用以下命令构建 `tfrt_translate` 和 `bef_executor`：\n\n```shell\n$ bazel build \u002F\u002Ftools:bef_executor\n$ bazel build \u002F\u002Ftools:tfrt_translate\n```\n\n上述命令会以 `opt` 编译模式构建二进制文件。有关更多构建选项，请参阅 [Bazel 的文档](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Fcommand-line-reference.html#build-options)。构建成功后，Bazel 会在输出末尾提示二进制文件的存放位置（默认为 `bazel-bin`）。\n\n在 `tfrt_translate` 和 `bef_executor` 构建完成后，可以使用以下命令运行一个 `.mlir` 程序：\n\n```shell\n$ bazel-bin\u002Ftools\u002Ftfrt_translate -mlir-to-bef path\u002Fto\u002Fprogram.mlir | bazel-bin\u002Ftools\u002Fbef_executor\n```\n\nTFRT 提供了一系列 .mlir 测试程序。例如：\n\n```shell\n$ bazel-bin\u002Ftools\u002Ftfrt_translate -mlir-to-bef mlir_tests\u002Fbef_executor\u002Fasync.mlir | bazel-bin\u002Ftools\u002Fbef_executor\n```\n\n任何输出都会打印到终端。\n\n### 添加 GPU 支持\n\n在 Bazel 命令中添加 `--config=cuda` 参数，即可将 GPU 后端链接到上述目标。\n\n可以通过 `--repo_env=CUDA_PATH=\u003Cpath>` 指定自定义的 CUDA Toolkit 路径。默认路径为 `\u002Fusr\u002Flocal\u002Fcuda`。\n\n### 测试\n\nTFRT 利用 LLVM 的 [LIT](https:\u002F\u002Fllvm.org\u002Fdocs\u002FCommandGuide\u002Flit.html) 测试框架和 [FileCheck](https:\u002F\u002Fllvm.org\u002Fdocs\u002FCommandGuide\u002FFileCheck.html) 工具来构建基于 MLIR 的检查测试。这些测试用于验证测试输出中是否出现特定的字符串标记。有关测试的更多介绍和指南，请参阅 [这里](https:\u002F\u002Fmlir.llvm.org\u002Fgetting_started\u002FTestingGuide\u002F#check-tests)。下面是一个示例测试：\n\n```c++\n\u002F\u002F RUN: tfrt_translate -mlir-to-bef %s | bef_executor | FileCheck %s\n\u002F\u002F RUN: tfrt_opt %s | tfrt_opt\n\n\u002F\u002F CHECK-LABEL: --- Running 'basic_tensor'\nfunc @basic_tensor() {\n  %c0 = tfrt.new.chain\n\n  %a = dht.create_uninitialized_tensor.i32.2 [3 : i64, 2 : i64]\n  %c1 = dht.fill_tensor_with_constant.i32 %a, %c0 0 : i32\n\n  \u002F\u002F CHECK: shape = [3, 2], values = [0, 0, 0, 0, 0, 0]\n  %c2 = dht.print_tensor %a, %c1\n\n  tfrt.return\n}\n```\n\n要运行测试，只需调用 `bazel test` 命令：\n\n```shell\n$ bazel test \u002F\u002Fmlir_tests\u002Fbef_executor:basics.mlir.test\n```\n\n位于 `\u002F\u002Fbackends\u002Fgpu\u002F...` 下的大多数测试需要使用 `--config=cuda` 进行构建，以便将 GPU 后端链接到 bef_executor：\n\n```shell\n$ bazel test --config=cuda \u002F\u002Fbackends\u002Fgpu\u002Fmlir_tests\u002Fcore_runtime:get_device.mlir.test\n```\n\n可以使用 Bazel 的 [目标模式](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Fguide.html#specifying-targets-to-build) 来运行多个测试：\n\n```shell\n$ bazel test -- \u002F\u002F... -\u002F\u002Fthird_party\u002F... -\u002F\u002Fbackends\u002Fgpu\u002F...  # 所有 CPU 测试。\n$ bazel test --config=cuda \u002F\u002Fbackends\u002Fgpu\u002F...                 # 所有 GPU 测试。\n```\n\n### 后续步骤\n\n请尝试我们的 [教程](documents\u002Ftutorial.md)，以获得一些关于 TFRT 的实践体验。\n\n有关 TFRT 设计的更多详细信息，请参阅 [主机运行时设计](documents\u002Ftfrt_host_runtime_design.md)。\n\n## 仓库概览\n\nTFRT 根目录下的三个关键目录是：\n\n*   `lib\u002F`：包含 TFRT 核心基础设施代码\n*   `backends\u002F`：包含设备特定的基础设施以及算子和内核实现\n*   `include\u002F`：包含 TFRT 核心基础设施的公共头文件\n\n\u003Ctable>\n  \u003Ctr>\n   \u003Ctd>\u003Cstrong>顶级目录\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Cstrong>子目录\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Cstrong>描述\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>include\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT 基础设施的公共头文件\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>lib\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT 基础设施，适用于主机运行时和所有设备运行时\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>basic_kernels\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>通用基础设施内核，例如控制流内核\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>bef_executor\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>BEFFile 和 BEFExecutor 的实现\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>bef_executor_driver\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>用于运行输入 MLIR 文件的 BEFExecutor 的驱动代码\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>bef_converter\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>MLIR 和 BEF 之间的转换器（bef_to_mlir 和 mlir_to_bef）\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>core_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT 核心运行时基础设施\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>distributed_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT 分布式运行时基础设施\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>data\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>TFRT 用于 TensorFlow 输入管道的基础设施\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>host_context\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>主机端 TFRT 数据结构，例如 HostContext、AsyncValue、ConcurrentWorkQueue\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>metrics\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>ML 指标集成\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>support\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>基础工具，例如 hash_util、string_util\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>tensor\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>基础 Tensor 类及主机端 Tensor 实现\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>test_kernels\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>测试用内核实现\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>tracing\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>跟踪\u002F性能分析支持\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>cpp_tests\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>C++ 单元测试\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>mlir_tests\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>基于 MLIR 的单元测试\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>utils\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>各种实用工具，例如用于生成测试 ML 模型的脚本。\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>tools\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>包括 bef_executor、tfrt_translate 等在内的二进制文件。\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>backends\u002Fcommon\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>不同后端共享的库，例如 eigen、dnn_op_utils.h\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>ops\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>跨设备共享的算子实现库，例如元数据函数\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>compat\u002Feigen\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>eigen 的适配库，被多个后端使用\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>utils\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>各种实用工具，例如用于生成 MLIR 测试代码的脚本。\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>backends\u002Fcpu\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 设备基础设施以及 CPU 算子和内核\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>include\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 相关的公共头文件\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fcore_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 核心运行时基础设施，例如 cpu_device\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fops\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 算子\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fkernels\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 内核\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>cpp_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 基础设施的单元测试\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>mlir_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>CPU 基于 MLIR 的测试\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctd colspan=\"2\" >\u003Cstrong>\u003Ccode>backends\u002Fgpu\u002F\u003C\u002Fcode>\u003C\u002Fstrong>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 基础设施以及算子和内核的实现。在与 TFRT 其他基础设施的接口稳定之后，我们可能会将该目录拆分为一个单独的仓库。\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>include\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 相关的公共头文件\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fcore_runtime\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 核心运行时基础设施\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fmemory\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 内存抽象\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fstream\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 流抽象及其封装\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Ftensor\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 张量\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fops\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 算子\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fkernels\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 内核\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>lib\u002Fdata\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 内核用于输入管道基础设施\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>cpp_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 基础设施的单元测试\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>mlir_tests\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>GPU 基于 MLIR 的测试\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>\n   \u003C\u002Ftd>\n   \u003Ctd>\u003Ccode>tools\u002F\u003C\u002Fcode>\n   \u003C\u002Ftd>\n   \u003Ctd>各种实用工具\n   \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 贡献指南\n\n如果您希望为 TFRT 做出贡献，请务必查看\n[贡献指南](CONTRIBUTING.md)。本项目遵循 TensorFlow 的\n[行为准则](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftensorflow\u002Fblob\u002Fmaster\u002FCODE_OF_CONDUCT.md)。\n参与其中即表示您同意遵守此行为准则。\n\n**注意：** 目前 TFRT 尚未开放外部贡献。TFRT 开发人员正在构建工作流程和持续集成系统，以支持外部贡献的接收。一旦准备就绪，我们将更新此页面。\n\n## 持续集成状态\n\n[![状态](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-clang.svg)](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-clang.html)\n[![状态](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-gcc.svg)](https:\u002F\u002Fstorage.googleapis.com\u002Ftensorflow-kokoro-build-badges\u002Ftf_runtime\u002Fubuntu-gcc.html)\n\n## 联系方式\n\n订阅 [TFRT 邮件列表](https:\u002F\u002Fgroups.google.com\u002Fa\u002Ftensorflow.org\u002Fd\u002Fforum\u002Ftfrt)，以参与运行时相关的通用讨论。\n\n我们使用 GitHub [问题](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues)来跟踪 bug 和功能请求。\n\n## 许可证\n\n[Apache 2.0 许可证](LICENSE)","# TFRT (TensorFlow Runtime) 快速上手指南\n\nTFRT 是 TensorFlow 的新一代运行时，旨在提供统一、可扩展的基础设施层，专注于底层效率和多线程性能。本指南将帮助您快速搭建开发环境并运行基础示例。\n\n> **注意**：TFRT 目前处于早期开发阶段，尚未准备好用于生产环境。\n\n## 1. 环境准备\n\n### 系统要求\n*   **操作系统**: Ubuntu 16.04 (官方主要支持版本)。MacOS 和 Windows 支持尚在规划中。\n*   **构建工具**: Bazel 4.0, Clang 11.1。\n*   **GPU 支持 (可选)**: 若需构建 GPU 后端，需安装 NVIDIA CUDA Toolkit v11.2 和 cuDNN 8.1+。\n\n### 前置依赖安装\n\n#### 安装 Bazel\n请参照 [Bazel 官方安装指南](https:\u002F\u002Fdocs.bazel.build\u002Fversions\u002Fmaster\u002Finstall-ubuntu.html) 安装 Bazel 4.0。\n验证安装：\n```shell\n$ bazel --version\nbazel 4.0.0\n```\n\n#### 安装 Clang\n推荐安装包含 `clang`, `lldb`, `lld` 的自动脚本包。TFRT 基于 Clang 11.1 构建。\n参照 [LLVM APT 仓库](https:\u002F\u002Fapt.llvm.org\u002F) 进行安装。若系统中存在多个 Clang 版本，请使用 `update-alternatives` 设置默认版本：\n```shell\n$ sudo update-alternatives --install \u002Fusr\u002Fbin\u002Fclang clang \u002Fusr\u002Fbin\u002Fclang-11 11\n$ sudo update-alternatives --install \u002Fusr\u002Fbin\u002Fclang++ clang++ \u002Fusr\u002Fbin\u002Fclang++-11 11\n```\n验证安装：\n```shell\n$ clang --version\nclang version 11.1.0\n```\n\n#### 配置 libstdc++\nTFRT 需要 `libstdc++8` 或更高版本。检查当前 Clang 选择的 GCC 版本：\n```shell\n$ clang++ -v |& grep \"Selected GCC\"\n```\n如果版本过低，请安装 gcc-8：\n```shell\n$ sudo add-apt-repository -y ppa:ubuntu-toolchain-r\u002Ftest\n$ sudo apt-get update\n$ sudo apt-get install -y gcc-8 g++-8\n```\n\n#### GPU 环境 (可选)\n如果不构建 GPU 后端，可跳过此步骤（并在后续构建命令中排除 `\u002F\u002Fbackends\u002Fgpu\u002F...`）。\n\n1.  安装 Clang Python 绑定：\n    ```shell\n    $ pip install libclang\n    ```\n2.  安装 CUDA Toolkit v11.2 (以 `.run` 文件为例)：\n    ```shell\n    $ wget http:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002F11.2.2\u002Flocal_installers\u002Fcuda_11.2.2_460.32.03_linux.run\n    $ sudo sh cuda_11.2.2_460.32.03_linux.run --toolkit --installpath=\u003Cpath>\n    ```\n    注册共享库路径：\n    ```shell\n    $ sudo echo '\u003Cpath>\u002Flib64' > '\u002Fetc\u002Fld.so.conf.d\u002Fcuda.conf'\n    $ sudo ldconfig\n    ```\n3.  安装 cuDNN (需 NVIDIA 开发者账号下载对应 deb 包)：\n    ```shell\n    $ wget http:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fmachine-learning\u002Frepos\u002Fubuntu1604\u002Fx86_64\u002Flibcudnn8_8.0.4.30-1+cuda11.1_amd64.deb\n    $ sudo apt install .\u002Flibcudnn8_8.0.4.30-1+cuda11.1_amd64.deb\n    ```\n\n## 2. 安装与构建\n\n克隆仓库后，进入根目录（包含 `WORKSPACE` 文件的目录）。\n\n### 构建核心工具\n构建图执行所需的两个核心二进制文件：`tfrt_translate` (MLIR 转 BEF) 和 `bef_executor` (执行器)。\n\n```shell\n$ bazel build \u002F\u002Ftools:bef_executor\n$ bazel build \u002F\u002Ftools:tfrt_translate\n```\n*注：默认使用 `opt` 优化模式编译。构建成功后，二进制文件位于 `bazel-bin\u002Ftools\u002F` 目录下。*\n\n### 启用 GPU 支持 (可选)\n若已安装 CUDA 环境，需在构建命令中添加 `--config=cuda`：\n```shell\n$ bazel build --config=cuda \u002F\u002Ftools:bef_executor\n$ bazel build --config=cuda \u002F\u002Ftools:tfrt_translate\n```\n若 CUDA 安装在非默认路径，可通过 `--repo_env=CUDA_PATH=\u003Cpath>` 指定。\n\n## 3. 基本使用\n\nTFRT 的工作流是将 MLIR 程序编译为二进制可执行格式 (BEF)，然后由执行器运行。\n\n### 运行示例\n使用以下命令管道将 `.mlir` 文件转换为 BEF 并立即执行：\n\n```shell\n$ bazel-bin\u002Ftools\u002Ftfrt_translate -mlir-to-bef path\u002Fto\u002Fprogram.mlir | bazel-bin\u002Ftools\u002Fbef_executor\n```\n\n### 测试运行\n项目自带了一系列 `.mlir` 测试程序，例如异步执行测试：\n\n```shell\n$ bazel-bin\u002Ftools\u002Ftfrt_translate -mlir-to-bef mlir_tests\u002Fbef_executor\u002Fasync.mlir | bazel-bin\u002Ftools\u002Fbef_executor\n```\n任何输出结果将直接打印到终端。\n\n### 运行测试套件\nTFRT 使用 LLVM 的 LIT 和 FileCheck 进行测试。\n\n运行单个测试：\n```shell\n$ bazel test \u002F\u002Fmlir_tests\u002Fbef_executor:basics.mlir.test\n```\n\n运行所有 CPU 测试（排除第三方和 GPU 测试）：\n```shell\n$ bazel test -- \u002F\u002F... -\u002F\u002Fthird_party\u002F... -\u002F\u002Fbackends\u002Fgpu\u002F...\n```\n\n运行所有 GPU 测试（需配置 cuda）：\n```shell\n$ bazel test --config=cuda \u002F\u002Fbackends\u002Fgpu\u002F...\n```","某大型电商平台的算法团队正在将复杂的推荐模型从实验环境迁移至高并发的生产服务器，以支撑实时个性化商品推荐。\n\n### 没有 runtime 时\n- **推理延迟高**：在处理小批量（small-batch）GPU 推理请求时，旧版运行时开销大，导致用户等待推荐结果的时间过长，影响转化率。\n- **异步支持弱**：难以充分利用多线程 CPU 资源，无法高效处理完全异步的编程模型，造成服务器在高峰期资源闲置与阻塞并存。\n- **硬件适配难**：团队试图引入新型边缘计算设备加速推理，但缺乏统一的底层基础设施，定制算子和硬件接入的开发周期长达数周。\n- **调试扩展繁琐**：研究人员想要添加自定义操作来验证新模型结构，却受限于僵化的执行层，每次修改都需要重新编译整个庞大链路。\n\n### 使用 runtime 后\n- **性能显著提升**：runtime 针对小批量 GPU 推理进行了深度优化（如 ResNet 50 基准测试所示），大幅降低了端到端延迟，实现了毫秒级响应。\n- **资源利用率最大化**：凭借对多线程宿主 CPU 的高效调度和原生异步支持，服务器吞吐量明显增加，轻松应对流量洪峰。\n- **硬件生态无缝集成**：借助其模块化设计，团队快速将新的数据中心加速器接入 TensorFlow 生态，无需重写上层业务代码。\n- **研发迭代加速**：研究人员利用 runtime 的可扩展性轻松添加自定义算子，结合 MLIR 编译器基础设施，让复杂新模型的实验验证效率翻倍。\n\nruntime 通过提供统一且高性能的底层执行设施，成功打破了模型从实验创新到生产落地之间的性能与效率瓶颈。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_runtime_e973d634.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",[84,88,92,96,100],{"name":85,"color":86,"percentage":87},"C++","#f34b7d",87.5,{"name":89,"color":90,"percentage":91},"MLIR","#5EC8DB",7.6,{"name":93,"color":94,"percentage":95},"Starlark","#76d275",4.3,{"name":97,"color":98,"percentage":99},"C","#555555",0.4,{"name":101,"color":102,"percentage":103},"Python","#3572A5",0.2,754,123,"2026-03-23T20:14:10","Apache-2.0",4,"Linux (Ubuntu 16.04)","可选（仅构建 GPU 后端时需要）。需要 NVIDIA GPU，需安装 CUDA Toolkit 11.2 和 cuDNN 8.1。未明确具体显存大小要求。","未说明",{"notes":113,"python":114,"dependencies":115},"该项目处于早期阶段，尚未准备好供一般生产使用。目前主要支持 Ubuntu 16.04，macOS 和 Windows 是未来计划支持的平台。若不需要 GPU 后端，可在构建时排除相关目标。构建系统基于 Bazel，需正确配置 clang 版本（推荐 11.1）及对应的 libstdc++ 版本。","未说明（仅需用于安装 libclang 的 pip 环境）",[116,117,118,119,120,121],"Bazel 4.0","Clang 11.1","libstdc++ 8+","libclang (Python binding)","NVIDIA CUDA Toolkit 11.2","NVIDIA cuDNN 8.1",[13],"2026-03-27T02:49:30.150509","2026-04-06T05:19:29.898269",[126,131,136,141,146,151],{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},16613,"如何在 Windows 上编译 TFRT？","可以在 Windows 上使用 Bazel 和 MSVC（如 VS 2019）进行编译。如果遇到 Bazel 无法识别编译器的问题，请检查 Bazel 与 MSVC 的配置设置。注意：优化构建（optimized builds）耗时非常长（可能超过 7000 秒），开发期间建议使用调试构建（`bazel build -c dbg`）以显著加快编译速度。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues\u002F80",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},16614,"TFRT\u002FMLIR 能否生成无需运行时依赖的独立可执行文件？","是的，TFRT\u002FMLIR 支持 AOT（提前编译）模式。它可以将浮点模型转换为量化模型，并针对预定义的硬件后端应用优化，最终生成独立的可执行代码嵌入到应用程序中。这种方式不需要 TensorFlow Runtime，仅依赖计算中实际使用的内核，从而减少二进制大小并降低运行时开销。这与 `tfcompile` 的功能类似。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues\u002F15",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},16615,"构建 TFRT 时出现 'stddef.h file not found' 等头文件缺失错误怎么办？","该问题通常与环境配置有关。建议在使用 Ubuntu 18.04 的 Docker 容器中进行构建，已验证在此环境下可以成功编译。确保安装了正确的 Clang 版本（如 clang-8 及以上），并且 GCC 安装路径正确（可通过 `clang++ -v | grep \"Selected GCC\"` 检查）。官方主要支持 Ubuntu 16，但 Ubuntu 18 通常也能正常工作。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues\u002F5",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},16616,"运行 `bazel clean` 命令失败并报错 \"Unrecognized arguments\" 如何解决？","这是由于 Bazel 配置文件中的星形规则选项导致的已知问题。临时解决方案是使用 `--noworkspace_rc` 和 `--expunge` 标志跳过配置文件清理：\n`bazel --noworkspace_rc clean --expunge`\n这将强制清除所有缓存内容并忽略可能导致错误的 rc 文件选项。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues\u002F39",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},16617,"在 Clang 10 + CUDA 10.2 环境下运行 GPU 测试失败怎么办？","这通常是本地配置问题而非 TFRT 本身的 Bug。如果在系统中安装了多个 CUDA SDK，使用 `--repo_env=CUDA_PATH=...` 指定路径可能会导致运行时共享库不匹配。建议检查环境变量和库路径，确保运行时加载的 CUDA 库与编译时一致，或者移除冲突的 CUDA 版本。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Fruntime\u002Fissues\u002F38",{"id":152,"question_zh":153,"answer_zh":154,"source_url":130},16618,"TFRT 的优化构建速度太慢，有什么加速方法吗？","优化构建（`-c opt`）确实非常耗时，这是已知问题。在日常开发过程中，强烈建议使用调试构建模式（`-c dbg`），其编译速度要快得多。只有在发布或性能测试时才需要使用优化构建。",[]]