lingvo

GitHub
2.9k 450 较难 1 次阅读 2周前Apache-2.0开发框架音频语言模型其他
AI 解读 由 AI 自动生成,仅供参考

Lingvo 是一个基于 TensorFlow 构建的深度学习框架,专为开发序列模型而设计。它旨在解决研究人员和工程师在复现前沿论文、搭建复杂神经网络时面临的代码重复与架构繁琐问题,提供了一套模块化、可扩展的解决方案。

这款工具特别适合人工智能领域的研究人员、算法工程师以及希望快速验证想法的开发者使用。无论是自动语音识别、机器翻译、语言建模,还是图像分类与 3D 物体检测,Lingvo 都内置了丰富的参考模型,帮助用户轻松上手。其独特的技术亮点在于高度灵活的模型定义方式,能够高效支持从实验性研究到大规模生产环境的各类需求。此外,Lingvo 社区活跃,众多顶级学术论文均基于此框架实现,确保了其技术的前瞻性与可靠性。如果你正在寻找一个既能快速原型开发又能支撑严肃科研任务的工具,Lingvo 值得尝试。

使用场景

某跨国科技公司的算法团队正致力于构建一个支持多语种的高精度语音识别系统,以优化其全球会议转录服务。

没有 lingvo 时

  • 团队需从零搭建复杂的序列模型架构,重复编写大量底层 TensorFlow 代码,导致开发周期长达数月。
  • 在尝试复现顶级学术会议(如 ICASSP)的语音识别模型时,因缺乏标准化的组件库,难以对齐论文中的网络结构。
  • 不同工程师编写的训练脚本风格迥异,超参数配置混乱,导致模型实验结果无法公平对比,复现性极差。
  • 扩展至新语言或调整模型规模时,需手动修改大量耦合代码,极易引入隐蔽的 Bug 且维护成本高昂。

使用 lingvo 后

  • 直接调用 lingvo 内置的成熟序列模型框架和预定义层,将核心模型的开发时间从数月缩短至数周。
  • 利用官方提供的自动语音识别(ASR)参考实现,快速复现并微调业界领先的模型架构,确保技术起点处于前沿。
  • 借助统一的配置系统和实验管理规范,团队成员能轻松共享和复现实验设置,显著提升了协作效率与结果可信度。
  • 通过模块化设计灵活替换编码器或解码器组件,轻松适配不同语种数据,并在不改动核心逻辑的前提下实现模型规模化扩展。

lingvo 通过提供标准化、模块化的序列建模框架,让团队从繁琐的基础设施构建中解放出来,专注于核心算法的创新与迭代。

运行环境要求

操作系统
  • Linux
GPU
  • 训练复杂模型(如机器翻译、GShard)需要 GPU 集群或 Cloud TPUs
  • 官方 Docker 配置支持 CUDA (通过 --config=cuda 构建),具体显存和 CUDA 版本取决于安装的 TensorFlow 版本,文中未明确指定最低显存要求
内存

未说明

依赖
notes1. 核心依赖是 TensorFlow (0.12.4 版本要求 TF 2.9,兼容至 2.10)。2. 从源码构建必须使用 Bazel 构建系统和 g++ 7.3 编译器。3. 官方仅提供 Linux 环境的 Docker 配置 (dev.Dockerfile/lib.dockerfile),Windows 和 macOS 原生支持未明确提及,建议通过 Docker 运行。4. 大规模模型(如万亿参数 GShard)需要在 GCP 上使用 Cloud TPUs v3-512 集群。5. 可通过 pip 安装直接使用,或通过 git clone + bazel 进行开发。
python3.7 - 3.10 (0.12.4 版本移除 3.7 支持,推荐 3.8-3.10;旧版本支持情况不同)
tensorflow>=2.9
bazel
g++ 7.3
lingvo hero image

快速开始

Lingvo

PyPI Python

Documentation

License

是什么?

Lingvo 是一个用于在 TensorFlow 中构建神经网络的框架,特别是序列模型。

使用 Lingvo 的相关论文列表可以在这里找到 PUBLICATIONS.md

目录

版本发布

PyPI 版本 提交记录
0.12.4 --
0.11.0 6fae10077756f54beacd5c454959f20b33fd65e2
0.10.0 075fd1d88fa6f92681f58a2383264337d0e737ee
0.9.1 c1124c5aa7af13d2dd2b6d43293c8ca6d022b008
0.9.0 f826e99803d1b51dccbbbed1ef857ba48a2bbefe
旧版发布

PyPI 版本 提交记录
0.8.2 93e123c6788e934e6b7b1fd85770371becf1e92e
0.7.2 b05642fe386ee79e0d88aa083565c9a93428519e

旧版发布的详细信息暂不可用。

重大破坏性变更

注意:这不是一个完整的列表。Lingvo 发布不提供任何关于向后兼容性的保证。

HEAD

此处无内容。

0.12.0

  • 通用
    • 现在需要 TensorFlow 2.9。
    • 已移除对 Python 3.7 的支持。
    • 兼容至多 TensorFlow 2.10 和 Python 3.10。

0.11.0

  • 通用
    • 现在需要 TensorFlow 2.7。
    • 已移除对 Python 3.6 的支持。

0.10.0

  • 通用
    • 现在需要 TensorFlow 2.6。
    • 已移除 CreateVariable() 方法中的 theta_fn 参数。

0.9.1

  • 通用
    • 现在支持 Python 3.9。
    • ops.beam_search_step 现在接收并返回一个额外参数 beam_done
    • namedtuple beam_search_helper.BeamSearchDecodeOutput 现在移除了字段 done_hyps

0.9.0

  • 通用
    • 现在需要 TensorFlow 2.5。
    • 已移除对 Python 3.5 的支持。
    • py_utils.AddGlobalVN 和 py_utils.AddPerStepVN 已合并为 py_utils.AddVN。
    • BaseSchedule().Value() 不再接受 step 参数。
    • 继承自 BaseSchedule 的类应实现 Value() 而不是 FProp()。
    • theta.global_step 已被移除,取而代之的是 py_utils.GetGlobalStep()。
    • py_utils.GenerateStepSeedPair() 不再接受 global_step 参数。
    • PostTrainingStepUpdate() 不再接受 global_step 参数。
    • 自定义输入操作中的 fatal_errors 参数现在接受错误消息子字符串,而不是整数错误代码。
旧版发布

0.8.2

  • 通用
    • NestedMap Flatten/Pack/Transform/Filter 等方法现在也会展开其子字典。
    • 继承自 abc.ABCMeta 的 BaseLayer 子类现在应继承 base_layer.ABCLayerMeta
    • __init__ 之外调用 self.CreateChild 现在会引发错误。
    • base_layer.initializer 已被移除。子类不再需要装饰其 __init__ 函数。
    • __init___CreateLayerVariables 之外调用 self.CreateVariable 现在会引发错误。
    • __init__ 内部无法再访问 self.vars 或 self.theta。请将变量的创建和访问移到 _CreateLayerVariables 中。变量作用域会在 _CreateLayerVariables 中根据层名自动设置。

旧版发布的详细信息暂不可用。

快速入门

安装

有两种方式来设置 Lingvo:通过 pip 安装固定版本,或者克隆仓库并使用 Bazel 构建。每种情况都提供了 Docker 配置。

如果您只想直接使用该框架,最简单的方式是通过 pip 安装。这样可以使用冻结版本的 Lingvo 框架开发和训练自定义模型。然而,这种方式难以修改框架代码或实现新的自定义操作。

如果您希望进一步开发框架并可能贡献 Pull Request,则应避免使用 pip,而选择克隆仓库。

pip:

可以通过 pip3 install lingvo 安装 Lingvo pip 包

有关如何开始使用 pip 包,请参阅 codelab

从源码安装:

所需条件如下:

  • TensorFlow 2.7 的安装(安装指南),
  • C++ 编译器(官方仅支持 g++ 7.3),以及
  • Bazel 构建系统。

请参考 docker/dev.Dockerfile 以获取一组可行的配置。

使用 git clone 克隆仓库,然后使用 Bazel 直接构建和运行目标。Codelab 中的 python -m module 命令需要映射为 bazel run 命令。

Docker:

两种情况下都有可用的 Docker 配置。具体说明可在每个文件顶部的注释中找到。

Docker 安装指南

运行 MNIST 图像模型

准备输入数据

pip:

mkdir -p /tmp/mnist
python3 -m lingvo.tools.keras2ckpt --dataset=mnist

bazel:

mkdir -p /tmp/mnist
bazel run -c opt //lingvo/tools:keras2ckpt -- --dataset=mnist

以下文件将在 /tmp/mnist 中创建:

  • mnist.data-00000-of-00001: 53MB。
  • mnist.index: 241 字节。

运行模型

pip:

cd /tmp/mnist
curl -O https://raw.githubusercontent.com/tensorflow/lingvo/master/lingvo/tasks/image/params/mnist.py
python3 -m lingvo.trainer --run_locally=cpu --mode=sync --model=mnist.LeNet5 --logdir=/tmp/mnist/log

bazel:

(cpu) bazel build -c opt //lingvo:trainer
(gpu) bazel build -c opt --config=cuda //lingvo:trainer
bazel-bin/lingvo/trainer --run_locally=cpu --mode=sync --model=image.mnist.LeNet5 --logdir=/tmp/mnist/log --logtostderr

大约 20 秒后,损失应降至 0.3 以下,并会保存一个检查点,如下所示。使用 Ctrl+C 终止训练程序。

trainer.py:518] step:   205, steps/sec: 11.64 ... loss:0.25747201 ...
checkpointer.py:115] 保存检查点
checkpointer.py:117] 检查点保存完成:/tmp/mnist/log/train/ckpt-00000205

/tmp/mnist/log/control 中会产生一些文件:

  • params.txt: 超参数。
  • model_analysis.txt: 各层的模型大小。
  • train.pbtxt: 训练用的 tf.GraphDef
  • events.*: TensorBoard 事件文件。

同时,在 /tmp/mnist/log/train 中也会生成:

  • checkpoint: 包含检查点文件信息的文本文件。
  • ckpt-*: 检查点文件。

现在,让我们在“测试”数据集上评估模型。在正常的训练设置中,训练器和评估器应作为两个独立的进程同时运行。

pip:

python3 -m lingvo.trainer --job=evaler_test --run_locally=cpu --mode=sync --model=mnist.LeNet5 --logdir=/tmp/mnist/log

bazel:

bazel-bin/lingvo/trainer --job=evaler_test --run_locally=cpu --mode=sync --model=image.mnist.LeNet5 --logdir=/tmp/mnist/log --logtostderr

当它开始等待新的检查点时,使用 Ctrl+C 终止任务。

base_runner.py:177] 未找到新检查点:/tmp/mnist/log/train/ckpt-00000205

评估准确率可以在日志中稍早的位置找到。

base_runner.py:111] eval_test: step:   205, acc5: 0.99775392, accuracy: 0.94150388, ..., loss: 0.20770954, ...

运行机器翻译模型

要运行更复杂的模型,您需要一个配备 GPU 的集群。更多信息请参阅 third_party/py/lingvo/tasks/mt/README.md

运行基于 GShard 变压器的巨型语言模型

要在 GCP 上使用 CloudTPUs v3-512 和 512 路模型并行性训练具有一万亿参数的 GShard 语言模型,请参阅 third_party/py/lingvo/tasks/lm/README.md 获取更多信息。

运行 3D 对象检测模型

要在 GCP 上使用 CloudTPUs 运行 StarNet 模型,请参阅 third_party/py/lingvo/tasks/car/README.md

模型

自动语音识别

汽车

图像

语言建模

机器翻译

参考文献

引用 Lingvo 时,请引用此论文

@misc{shen2019lingvo,
    title={Lingvo:一个模块化且可扩展的序列到序列建模框架},
    author={Jonathan Shen、Patrick Nguyen、Yonghui Wu、Zhifeng Chen 等},
    year={2019},
    eprint={1902.08295},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

许可证

Apache 许可证 2.0

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.3k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架