HybridApiMemLoRACoordPredictor 설계·구현.8-run 종합 분석(260505-apimem_binfill_8run_summary.html)에서 확인된 사실:
가설 (b)만 단독 검증하려면 좌표만 in-distribution(LoRA)으로 바꾸고 나머지(mt, 의도 텍스트)는 ApiMem에 맡기는 minimal hybrid가 필요하다. SR 변화로 coord 기여도를 정량화한다.
매 K=48 step API tick마다 다음 흐름으로 동작:
ApiMemModel.get_subgoal(image) → subgoal_API (text + 256-rescaled coord)Qwen3VLModelMemER.call() → subgoal_LoRA (text + 256-rescaled coord)LoRA의 add_execution_frame()은 매 step 호출(keyframe buffer 유지), call()은 K마다 한 번만 (compute 절약).
| 파일 | 변경 내용 |
|---|---|
examples/robomme/eval.py | Args에 api_mem_use_lora_coord: bool = False 추가 |
examples/robomme/subgoal_predictor.py | HybridApiMemLoRACoordPredictor 클래스 추가 + builder dispatch |
scripts/run_api_mem_one_episode.sh | 5번째 인자 LORA_COORD (0/1) 추가 |
_merge_coordpython -m py_compile 두 파일 통과bash -n scripts/run_api_mem_one_episode.sh 통과tyro.cli(Args, ['--use-api-mem','--api-mem-use-lora-coord',...]) 새 flag 정상 파싱flash-lite부터 시작한 이유: 비용(~$0.10/sweep)이 낮아 hybrid 로직 자체 검증에 적합 + run 4429(flash-lite rescaled, SR 8 %)와 직접 비교 가능. 결과 유의미하면 pro로 확장.
| Run | Model | Mode | SR | 비고 |
|---|---|---|---|---|
| 4429 | flash-lite | 1-call rescaled | 8.0 % | 직접 비교 baseline |
| 5092 | flash-lite | 1-call bbox-first | 16.7 % | 27 ep abort (hallucinate loop) |
| 5652 | flash-lite | 2-step separate det | 6.4 % | robust ↑, detection ceiling 도달 |
| 6056 | pro | 2-step separate det | 4.3 % | robustness 만점, SR 불변 |
| LoRA (대조) | Qwen3-VL-4B LoRA | full pipeline | 64.0 % | upper bound |
| 9951 | flash-lite | hybrid (LoRA coord) | — | FAILED, TBD |
Job 실패 원인 미파악. 가능한 원인: sbmr restart loop 내 script 인자 파싱 오류, conda env 미활성화, Vulkan 서버 초기화 실패 등. slurms/apimem-BinFill-flashlite-loracoord_9951.out 로그 확인 필요.
이번 단계의 의미는 구현 자체에 있다:
HybridApiMemLoRACoordPredictor는 향후 wording-swap 실험(Option B)이나 timing-swap 실험으로도 쉽게 확장 가능.slurms/apimem-BinFill-flashlite-loracoord_9951.out 로그로 FAILED 원인 파악 후 재제출.pro_loracoord) 제출 + 좌표 bottleneck 확정 보고서 작성scripts/analyze_hybrid_log.py 작성 → swap rate / verb_mismatch / NEW success(LoRA-False & hybrid-True ep) 한 번에 추출.