# OpenVLA量化微调报错Variable._execution_engine.

> 原文链接：https://robotics.hellobike.com/pitfalls/2024-07-12-openvla-25
> 频道：pitfalls | 更新日期：2024-07-12 | 标签：auto, github-issue, openvla
> 核心摘要：OpenVLA开启量化微调时反向传播报错，通过配置DDP静态图及重入式梯度检查点解决。

# OpenVLA量化微调报错Variable._execution_engine.

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Variable._execution_engine.run_backward eror during finetuning](https://github.com/openvla/openvla/issues/25)（GitHub openvla/openvla #25）

**状态**：有绕过办法

## 问题

在单节点2卡DGX V100环境下运行OpenVLA `finetune.py` 脚本并开启 `--use_quantization true` 时，执行 `normalized_loss.backward()` 触发 `RuntimeError: Expected to mark a variable ready only once`。错误提示参数在多次重入反向传播中被复用或在forward外使用，导致C++引擎执行失败。

## 环境

硬件：单节点2x DGX V100 GPU；软件：OpenVLA finetune.py脚本，Python 3.10，PyTorch（含torch.utils.checkpoint），启用量化（Quantization/QLoRA）与LoRA微调。

## 解决办法

1. 确保拉取最新代码以包含优化器 `zero_grad` 调用修复。
2. 初始化DDP包装时显式设置 `find_unused_parameters=True`、`gradient_as_bucket_view=True` 及 `static_graph=True`。
3. 启用梯度检查点时传入 `gradient_checkpointing_kwargs={"use_reentrant":True}` 以支持重入式反向传播。
4. 确认量化参数已冻结，仅训练fp32/bf16参数（通常加载 `load_in_4bit` 后包裹LoRA适配器会自动处理）。

讨论原作者：@youliangtan 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub openvla/openvla #25：Variable._execution_engine.run_backward eror during finetuning](https://github.com/openvla/openvla/issues/25)