Product & Environment
- Product: ARISE2
- OS: Ubuntu 24.04.3 LTS
Description
[vision.mxq 양자화] RoPE 처리된 중간 텐서를 그래프 출력으로 노출하는 방법 문의 (qbcompiler 1.1.2+aries2)
- qbcompiler==1.1.2+aries2
- 대상 모델: Qwen3-VL-2B-Instruct의 vision encoder (Qwen3VLVisionModel 기반, 24개 block)
- 컴파일 대상: --target-device Aries2
vision.mxq 컴파일 시, 원래 그래프 출력(merger + deepstack 3개, 총 4개)에 더해 딱 2개 레이어(16번째, 24번째/마지막)의 attention 정보만 추가로 출력하고 싶습니다. 이 attention 정보는: - 24개 레이어 전체가 아니라 이 2개 레이어에 대해서만
- 원본 attention weight 행렬(seq×seq) 전체가 아니라, head 평균 후 4개씩 그룹 평균한 (64,) 크기의 벡터뿐
토큰 프루닝(HiPrune) 알고리즘이 어떤 이미지 토큰을 유지할지 결정하는 데 이 값만 필요한 상황입니다.
시도 1 — 해당 2개 레이어에서만 수동 softmax(QKᵀ)로 attention weight 계산 후 출력
MBLT 컴파일은 성공(op 지원율 98.9%). 이어서 MXQ 컴파일 시 아래 에러로 실패:
RuntimeError: rope matmul is not fully fused: fx_patched_fn0_14/cast/matmul
시도 2 — attn_output 계산 경로(SDPA)는 24개 레이어 전부 원본 그대로 유지하고, 해당 2개 레이어의 post-RoPE Q,K 텐서 자체만 그래프 출력에 추가(신규 연산 없이 순수 passthrough)
MBLT 컴파일은 100% 성공(op 지원율 100%, 새 연산 추가 없음). MXQ 컴파일 시 다른 에러로 실패:
RuntimeError: Error. quantize failed. rotateOutWeight: Cout must be a multiple of D (block size)
원인으로 추정한 것: HeadOutChRotation(언어 모델 쪽에서 만든 rotation matrix로 비전 출력을 정렬하는 스킴)이 원래 대상 레이어 4개(merger+deepstack)였는데, 새로 추가한 출력 2개(각 Q,K라 총 4개 텐서)까지 대상에 자동으로 포함시켜서 실패한 것으로 보입니다. EquivalentTransformationConfig.HeadOutChRotation의 필드는 apply/matrix_path 둘뿐이라, 레이어별로 이 스킴에서 제외하는 옵션을 API에서 찾지 못했습니다.
시도 3 — 위 Q,K 출력을 merger/deepstack과 완전히 별개의 그래프(별도 MXQ)로 분리 컴파일, head_out_ch_rotation=False로 설정
MBLT 컴파일은 다시 100% 성공. MXQ 컴파일 시 시도 1과 같은 계열의 에러:
RuntimeError: rope is not fully fused: rope_k_23
head_out_ch_rotation=False뿐 아니라, spin_r2=False, 그리고 qk/ud/vo/spin_r1/spin_r2/optimize_ffn 6개 equivalent-transformation 스킴을 전부 False로 설정해도 동일한 에러가 재현되어, 이 6개 스킴 중 어느 것도 원인이 아니라는 것까지 확인했습니다.
이와 관련하여 질문이 있습니다.
- RoPE(StatefulRoPEWrapper로 추정)를 거친 중간 텐서(Q, K, 혹은 그로부터 계산한 attention weight)를 MXQ 컴파일 그래프의 최종 출력으로 노출하는 공식적으로 지원되는 방법이 있을까요?
- 있다면 어떤 설정/API를 사용해야할까요? (mxq_compile의 파라미터, 혹은 ModelParser/EquivalentTransformationConfig 레벨의 다른 옵션 등)
- 만약 없다면, 이게 qbcompiler==1.1.2+aries2의 알려진 제약인 것인지 아니면 저희가 놓친 우회 방법이 있는 지 문의 드리고 싶습니다.
매번 빠르고 친절하게 답변해주셔서 감사합니다.