l4casadi

GitHub
568 47 较难 1 次阅读 昨天MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

l4casadi 是一个专为数据驱动优化和学习型最优控制设计的开源框架,它实现了 PyTorch 深度学习模型与 CasADi 数值优化工具的无缝集成。在机器人轨迹规划、流体导航等复杂场景中,开发者常面临如何将训练好的神经网络嵌入传统优化求解器的难题,而 l4casadi 正是为了解决这一“最后一公里”的衔接问题而生。

该工具主要面向从事控制理论、机器人学及自动化领域的研究人员和算法工程师。只要你的 PyTorch 模型具备可微分且可追踪的特性,l4casadi 就能将其转化为 CasADi 可调用的函数,从而利用高效的数值优化算法(如支持 Acados)进行求解。其核心技术亮点在于对计算效率的深度优化:v2 版本原生支持 PyTorch 批处理机制,通过将多个输入合并为单次调用,可将运算速度提升 5 到 10 倍;同时,它严格保持输入张量的维度一致性,避免了以往版本中因形状自动变换引发的混淆,并允许用户灵活选择是否生成海森矩阵以适应不同精度的需求。无论是构建穿越神经辐射场(NeRF)的无碰撞轨迹,还是模拟湍流中的节能航行,l4casadi 都能让基于学习的模型轻松融入严谨的数学优化流程。

使用场景

某自动驾驶团队正在开发一套基于神经辐射场(NeRF)的无人机复杂环境轨迹规划系统,需要利用深度学习模型感知障碍物并实时生成无碰撞的最优飞行路径。

没有 l4casadi 时

  • 框架割裂严重:感知模块用 PyTorch 训练,规划模块用 CasADi 求解,两者无法直接互通,工程师需手动导出权重并重写前向传播逻辑,极易出错。
  • 梯度计算困难:为了在优化过程中考虑神经网络预测的不确定性,需要计算模型输出的高阶导数,手动推导或近似差分不仅精度低且耗时巨大。
  • 实时性差:由于无法利用 GPU 加速优化过程中的模型推理,每次迭代都要在 CPU 上串行调用模型,导致规划频率远低于控制需求,无人机容易撞机。
  • 维护成本高:一旦感知模型结构更新,整个优化代码库都需要重新适配和调试,开发迭代周期长达数周。

使用 l4casadi 后

  • 无缝集成:l4casadi 直接将可微分的 PyTorch 模型封装为 CasADi 函数,无需重写任何代码,实现了“训练即部署”的流畅工作流。
  • 自动高阶微分:借助 l4casadi 的自动微分能力,系统能精确高效地计算神经网络输出的雅可比矩阵甚至海森矩阵,显著提升了优化收敛速度和轨迹平滑度。
  • 硬件加速与批处理:利用 l4casadi v2 的批处理特性,将多个采样点打包一次性送入 GPU 推理,结合 CasADi 的高效求解器,规划速度提升了 5-10 倍,满足实时避障需求。
  • 敏捷迭代:研究人员可以随意调整 PyTorch 模型架构,l4casadi 自动适配维度变化,让算法验证周期从数周缩短至数小时。

l4casadi 通过打通深度学习与数值优化的壁垒,让数据驱动的高性能实时控制变得简单且高效。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需
  • 如需 GPU 加速,需要安装 NVIDIA CUDA Toolkit (包含 nvcc),具体版本需与已安装的 PyTorch CUDA 版本匹配(例如 cuda-12-3)
  • 未指定具体显卡型号和显存大小
内存

未说明

依赖
notes1. 构建环境要求:必须安装 CMake 和兼容的 C++ 编译器(Linux/macOS 推荐 GCC 10+;Windows 必须安装 Visual C++ Build Tools,不可使用 GCC)。2. Windows 用户需注意文件路径长度限制,过长的路径可能导致构建失败。3. 安装时必须添加 '--no-build-isolation' 参数,以便正确链接已安装的 PyTorch。4. PyTorch 模型必须是可追踪(traceable)且可微分的。5. v2 版本中,传入的 PyTorch 模型必须能处理二维输入矩阵。
python未说明 (需兼容 PyTorch >=2.0)
torch>=2.0
casadi
setuptools>=68.1
scikit-build>=0.17
cmake>=3.27
ninja>=1.11
l4casadi hero image

快速开始

PyPI version L4CasADi CI Downloads


Learning 4 CasADi 框架

L4CasADi 能够将 PyTorch 训练的模型无缝集成到 CasADi 中,从而实现高效且可能由硬件加速的数值优化。对 PyTorch 模型的唯一要求是可导出和可微分。

通过 NeRF 的无碰撞最小化弹跳轨迹 湍流中节能的鱼类导航
在 Colab 中打开                                                在 Colab 中打开                      

两个 L4CasADi 示例:通过 NeRF 的无碰撞轨迹以及在湍流中的导航

arXiv: Learning for CasADi:数值优化中的数据驱动模型

演讲:Youtube

L4CasADi v2 的重大变更

根据首批用例的反馈,L4CasADi v2 在设计时充分考虑了效率与简洁性。

这带来了以下几项重大变更:

  • L4CasADi v2 可以利用 PyTorch 的批处理功能来提升效率。当设置 batched=True 时,L4CasADi 会将输入张量的第一个维度视为批次维度。因此,该维度上的各元素之间的一阶和二阶导数都被假定为稀疏零矩阵。为了充分利用这一点,在你的 CasADi 程序中,不要多次调用 L4CasADi 函数,而是将所有输入批量合并后只进行一次 L4CasADi 调用。例如,对比非批处理的 NeRF 示例批处理的 NeRF 示例,后者速度提升了 5 到 10 倍。
  • L4CasADi v2 不再改变输入的形状,因为这一行为曾引发混淆。传递给 PyTorch 模型的张量将完全匹配 CasADi 输入变量的精确维度。你需要确保 PyTorch 模型能够正确处理二维输入矩阵!相应地,参数 model_expects_batch_dim 已被移除。
  • 默认情况下,L4CasADi v2 不会提供 Hessian 矩阵,而只会提供伴随梯度的雅可比矩阵。对于大多数优化问题来说,这已经足够了。不过,你也可以通过设置 generate_jac_jac=True 来显式请求生成 Hessian 矩阵。

目录

如果你使用了本框架,请引用以下两篇论文:

@article{salzmann2023neural,
  title={实时神经网络 MPC:用于四旋翼无人机及敏捷机器人平台的深度学习模型预测控制},
  author={Salzmann, Tim 和 Kaufmann, Elia 和 Arrizabalaga, Jon 和 Pavone, Marco 和 Scaramuzza, Davide 和 Ryll, Markus},
  journal={IEEE Robotics and Automation Letters},
  doi={10.1109/LRA.2023.3246839},
  year={2023}
}
@inproceedings{{salzmann2024l4casadi,
  title={Learning for CasADi:数值优化中的数据驱动模型},
  author={Salzmann, Tim 和 Arrizabalaga, Jon 和 Andersson, Joel 和 Pavone, Marco 和 Ryll, Markus},
  booktitle={动力学与控制学习会议 (L4DC)},
  year={2024}
}

使用 L4CasADi 的项目

  • 实时神经网络 MPC:用于四旋翼无人机及敏捷机器人平台的深度学习模型预测控制
    论文 | 代码
  • AC4MPC:用于非线性模型预测控制的演员-评论家强化学习
    论文
  • 基于强化学习的 MPC,结合神经动力学模型
    论文
  • 用于障碍物感知局部运动规划的神经势场
    论文 | 视频 | 代码
  • 基于深度神经网络的 N-MPC,利用深度图像实现避障
    论文 | 代码
  • 基于 NNMPC 的自动驾驶规划与跟踪一体化框架,考虑路面变化
    论文

如果你的项目正在使用 L4CasADi,并希望在此处展示,请联系我们。


安装

前置条件

无论您是从源代码安装还是通过 pip 安装,都需要满足以下要求:

  • 可用的构建系统:兼容 CMake 的 C++ 编译器。
    • 在 Linux/macOS 上: 建议使用 GCC 10 或更高版本。
    • 在 Windows 上: 必须安装 CMake 和 Visual C++ 构建工具(请勿使用 GCC 编译器)。
  • 在您的 Python 环境中安装 PyTorch (>=2.0)。
    python -c "import torch; print(torch.__version__)"

Windows 安装

对于在 Windows 上安装的用户,请确保执行以下步骤:

  1. 安装 CMake 和 Visual C++ 构建工具: 下载并安装 CMakeVisual C++ 构建工具
  2. 确保工具已添加到 PATH: 确保 CMake 和 Visual C++ 构建工具都已添加到系统的 PATH 中。这可以通过安装程序(选择更新 PATH 的选项)或手动完成。
  3. 注意文件路径长度: 在构建 L4CasADi 模型时,确保目录路径不超过 Windows 的最大字符限制。过长的路径可能会导致构建问题,因此尽可能选择路径较短的目录。

使用 pip 安装(仅 CPU)

  • 确保已安装 Torch 的 CPU 版本: pip install torch>=2.0 --index-url https://download.pytorch.org/whl/cpu
  • 确保所有构建依赖项已安装:
    setuptools>=68.1
    scikit-build>=0.17
    cmake>=3.27
    ninja>=1.11
    
  • 运行: pip install l4casadi --no-build-isolation

从源代码安装(仅 CPU)

  • 克隆仓库: git clone https://github.com/Tim-Salzmann/l4casadi.git
  • 通过以下命令安装所有构建依赖项: pip install -r requirements_build.txt
  • 从源代码构建: pip install . --no-build-isolation

--no-build-isolation 标志是 L4CasADi 找到并链接已安装的 PyTorch 所必需的。

GPU(CUDA)

CUDA 的安装需要安装 nvcc,它是 CUDA 工具包的一部分,在 Linux 上可以通过以下命令安装: sudo apt-get -y install cuda-toolkit-XX-X(其中 XX-X 是您已安装的 CUDA 版本,例如 12-3)。安装 CUDA 工具包后,nvcc 通常位于 /usr/local/cuda/bin/nvcc

确保可以执行 nvcc -V,然后运行 pip install l4casadi --no-build-isolation 或者 CUDACXX=<PATH_TO_NVCC> pip install . --no-build-isolation 来从源代码构建。

如果 nvcc 不在您的路径中,您可以为 L4CasADi 指定 nvcc 的路径。例如: CUDACXX=<PATH_TO_NVCC> pip install l4casadi --no-build-isolation


快速入门

在 Python 中定义一个 L4CasADi 模型,只需提供一个预先定义好的 PyTorch 模型即可,操作非常简单:

import l4casadi as l4c

l4c_model = l4c.L4CasADi(pyTorch_model, device='cpu')

其中,PyTorch 模型的架构没有限制,大型模型可以借助专用硬件加速。


在线学习与更新

L4CasADi 支持在 CasADi 图中在线更新 PyTorch 模型。要使用此功能,在初始化 L4CasADi 时传递 mutable=True。要更新模型,调用 L4CasADi 对象上的 update 函数。您可以选择性地传入更新后的模型作为参数。如果不传入模型,则假定在初始化时传入的参考模型已被更新,并将用于更新。


Naive L4CasADi

虽然 L4CasADi 在设计时考虑了效率,内部利用了 PyTorch 的 C++ 接口,但这仍然可能带来一定的开销,对于小型、简单的模型来说,这种开销可能会显得过大。因此,L4CasADi 还提供了一个 NaiveL4CasADiModule,它直接使用 CasADi 操作重新创建 PyTorch 的计算图,并复制权重——从而生成纯 C 计算图,避免了与 PyTorch 的上下文切换。然而,这种方法仅限于一小部分预定义的 PyTorch 操作——仅支持 MultiLayerPerceptron 模型和 CPU 推理。

当网络层数少于三层,且每层仅有 64 个神经元(或等效规模)时,PyTorch 框架本身的开销会占据主导地位。对于小于该规模的模型,我们建议使用 NaiveL4CasADiModule。而对于更大的模型,这种开销则变得可以忽略,此时应使用 L4CasADi。

https://github.com/Tim-Salzmann/l4casadi/blob/f7b16fba90f4d3ee53217b560f26b47e6b23e44a/examples/naive/readme.py#L5-L9


实时 L4CasADi

实时 L4CasADi(原 ML-CasADi 中的“近似”方法)是驱动 实时神经 MPC 的底层框架。它用局部泰勒近似替换复杂模型。对于某些优化过程(如具有多个射击节点的 MPC),这可以显著提高优化速度。然而,“实时 L4CasADi”有许多限制(仅支持 Python,无法生成 C(++) 代码等),因此它并不能完全替代 L4CasADi。相反,它是一个针对特定应用场景的补充框架。

更多信息请参见 这里

https://github.com/Tim-Salzmann/l4casadi/blob/f7b16fba90f4d3ee53217b560f26b47e6b23e44a/l4casadi/realtime/examples/readme.py#L32-L43


示例

https://github.com/Tim-Salzmann/l4casadi/blob/f7b16fba90f4d3ee53217b560f26b47e6b23e44a/examples/readme.py#L28-L40

请注意,仅支持 casadi.MX 符号变量作为输入。 多输入多输出函数可以通过在传递给模型时连接符号输入,并在 PyTorch 函数内部将其拆分来实现。 要使用 GPU(CUDA),只需在 L4CasADi 构造函数中传递 device="cuda" 即可。 更多示例:


Acados 集成

要将本框架与 Acados 配合使用,请按照以下步骤操作:

  • 按照 安装说明 进行安装。
  • 安装 Python 接口
  • 确保正确设置 LD_LIBRARY_PATH(在 macOS 上为 DYLD_LIBRARY_PATH)。
  • 确保正确设置 ACADOS_SOURCE_DIR

关于如何在 Acados 框架中将 PyTorch 模型用作模型预测控制的动力学模型的示例,可在 examples/acados.py 中找到。

若要将 L4CasADi 与 Acados 结合使用,需在 AcadosOcp.solver_options 中相应地设置 model_external_shared_lib_dirmodel_external_shared_lib_name

ocp.solver_options.model_external_shared_lib_dir = l4c_model.shared_lib_dir
ocp.solver_options.model_external_shared_lib_name = l4c_model.name

GitHub 链接


补充信息

预热

请注意,PyTorch 会在首次执行时构建计算图。因此,首次调用 CasADi 函数时会比较慢。您可以在实际使用之前,先调用生成的 CasADi 函数一到多次,以完成预热并进入优化的执行状态。

常见问题

相似工具推荐

openclaw

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

349.3k|★★★☆☆|2天前
Agent开发框架图像

stable-diffusion-webui

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

162.1k|★★★☆☆|3天前
开发框架图像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 真正成长为懂上

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

ComfyUI

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

108.1k|★★☆☆☆|今天
开发框架图像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|★★☆☆☆|2天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|2天前
语言模型图像Agent