CoolFace
Datasetpublic

prehj/robocasa-ratio-labels

배속 라벨 (ratio labels) 로봇 정책이 내는 액션 청크를 시점마다 몇 배속으로 압축해도 되는지 적은 라벨입니다. robocasa 벤치마크용입니다. 붙이는 법 git clone https://github.com/rakybond007/quantization_label_gr00t python quantization_label_gr00t/vlm_gate/scripts/apply_ratio_labels.py \ --labels labels/robocasa.parquet \ --dataset /내/경로/lerobot/robocasa \ --out /내/경로/robocasa_with_ratio pandas 와 pyarrow 만 있으면 됩니다. GPU 도 VLM 도 필요 없습니다. --dry-run 을 먼저 주면 아무것도 쓰지 않고 붙는 비율만 보여 줍니다. 붙는 열… See the full description on the dataset page: https://huggingface.co/datasets/prehj/robocasa-ratio-labels.

sourceHugging Faceapache-2.0updated 14d agoView on Hugging Face
0likes110downloads
Dataset Card

배속 라벨 (ratio labels)

로봇 정책이 내는 액션 청크를 시점마다 몇 배속으로 압축해도 되는지 적은 라벨입니다. robocasa 벤치마크용입니다.

붙이는 법

bash
git clone https://github.com/rakybond007/quantization_label_gr00t
python quantization_label_gr00t/vlm_gate/scripts/apply_ratio_labels.py \
    --labels labels/robocasa.parquet \
    --dataset /내/경로/lerobot/robocasa \
    --out     /내/경로/robocasa_with_ratio

pandas 와 pyarrow 만 있으면 됩니다. GPU 도 VLM 도 필요 없습니다. --dry-run 을 먼저 주면 아무것도 쓰지 않고 붙는 비율만 보여 줍니다.

붙는 열

열뜻
ratio이 시점에 쓸 배속. 1.0 · 1.5 · 2.0 · 2.5 중 하나
ratio_conf그 배속을 정한 신뢰도 0~1. 확률이 아니라 순서 값
ratio_fixed접촉이라 1.0 으로 고정된 시점이면 1
ratio_valid라벨이 있는 시점이면 1

`ratio_valid` 가 0 인 행은 손실에서 빼야 합니다. 라벨이 없는 시점을 "1배속이 정답" 으로 학습시키면 안 됩니다. ratio 자리에 1.0 이 들어가 있는데 그것은 기본값이지 판정이 아닙니다.

안에 든 것

labels/robocasa.parquet     등급 A~E · 신뢰도 · 배속 · 접촉 표시
ceilings/robocasa.json      태스크별 [하한, 상한]
prompts/robocasa.txt        그 등급을 매긴 문항 전량
checks/robocasa.py          부호·가중치

등급이 같이 들어 있습니다. 비싼 것은 VLM 이 매기는 등급뿐이고 그 뒤는 전부 산수입니다. 띠나 규칙을 바꿔 CPU 만으로 다시 라벨링할 수 있습니다.

어떻게 만들었나

접촉이면        1.0배 고정 (그리퍼가 열리거나 닫히는 순간, 쥔 채 느리게 가는 구간)
아니면          신뢰도 순서로 그 태스크의 [하한, 상한] 안에 앉힌다

신뢰도는 VLM 이 문항 다섯에 매긴 1~5 등급에서 나옵니다.

등급 -> 값    (g − 1) / 4
신뢰도        ( 1 + Σw·가점 − Σw·감점 ) / 2

문항과 가중치는 장면 인상으로 지은 것이 아니라 측정된 손상에서 나왔습니다. 상한도 문항이 정하지 않고 평가가 줍니다 -- 태스크마다 배속을 올려 가며 성공률과 스텝을 재서, 성공률이 유지되고 스텝이 실제로 줄어드는 가장 높은 배속이 상한입니다. 문항이 정하는 것은 그 상한을 얼마나 쓸 것인가뿐입니다.

자세한 것은 저장소의 docs/RATIO_LABELS.md 와 vlm_gate/analysis/TASK_CEILINGS.md 를 보세요.

이 판은 대조군입니다

접촉 가드가 안 들어간 판입니다. 놓기·집기 순간이 안 늦춰집니다. 실제로 쓰실 것은 prehj/robocasa-ratio-labels-contact 이고, 이 판은 "가드가 없으면 어떻게 되는가" 를 보는 대조군입니다.

이 판접촉 판
1.0배21.4%34.9%
1.5배60.1%49.3%
2.0배11.0%9.5%
2.5배7.5%6.4%
평균 배속1.5231.437
접촉으로 1.0 고정0.00%16.56%

신뢰도는 두 판이 같습니다(평균 0.4267). 가드는 신뢰도를 건드리지 않고 배속만 박기 때문입니다.

배속 사다리

ladders.json 에 상한표를 만든 사다리가 태스크별로 다 들어 있습니다 -- 문항을 다시 뽑거나, 상한표를 다시 만들거나, 라벨 방식을 다듬을 때 쓰세요. 무엇을 왜 사다리에서 뺐는지도 같은 파일에 있습니다.

robocasa 사다리는 1.0 · 1.5 · 2.0 · 2.5 · 2.67 · 4.0 입니다. `K=3` 이 실제로는 2.67배입니다 -- 16스텝을 3으로 나눈 꼬리를 압축하지 않고 낱개로 붙이기 때문입니다.

이 판의 신뢰도는 정수 등급에서 나왔습니다

conf 를 문항별 정수 등급(1~5) 에서 계산했습니다. 저장소의 f03a2e3 이후 코드는 등급 분포가 있으면 그 기댓값을 쓰는데, 이 라벨을 만든 원본 (robocasa phase9)에 분포가 없어 여기에는 안 들어갔습니다. 그래서 `eg_A`~`eg_E` 열이 없습니다.

받는 쪽이 checks/robocasa.py 와 등급 열로 신뢰도를 다시 만들면 여기 실린 conf 와 같은 값이 나옵니다 -- 분포가 없어 새 코드도 정수 경로로 떨어지기 때문입니다. 우연히 맞는 것이 아니라 그렇게 되도록 되어 있습니다.

분포를 쓰는 쪽이 더 낫습니다. P(3)=0.9 와 P(2)=.3/P(3)=.35/P(4)=.3 은 전혀 다른 상태인데 정수로만 받으면 둘이 같아집니다. 다만 그러려면 204만 프레임을 다시 라벨링해야 해서 이 판은 그대로 뒀습니다. libero 판은 처음부터 분포를 담습니다.

지시문 열이 붙은 판 — labels/robocasa_instr.parquet

새로 올린 파일입니다. 기존 `labels/robocasa.parquet` 은 그대로 둡니다 — 이미 받아 가신 분이 있을 수 있어서입니다. 라벨 값은 완전히 같고 열 하나가 늘었습니다.

labels/robocasa.parquet         기존. episode_index · frame_index · A~E · fixed · ratio · task · conf
labels/robocasa_instr.parquet   위에 instruction 한 열 추가
열예몇 종
taskTurnOnStove24
instructionturn on the front right burner of the stove334

모델에 넣을 것은 `instruction` 입니다. 이 라벨을 쓰는 머리는 정책 위에 얹히고, 정책이 받는 것은 TurnOnStove 라는 분류명이 아니라 그 문장입니다. 태스크로 뭉쳐 학습하면 배치할 때 학습에서 못 본 입력을 받게 됩니다. 한 태스크 안에도 "front right burner" 와 "front left burner" 가 따로 있고, 그것이 배속에 무관하다고 볼 근거가 없습니다.

task 는 상한 띠를 되짚기 위한 것입니다. 띠는 태스크 단위로 재서 ceilings/robocasa.json 에 있으므로, 어느 행이 어느 띠에서 왔는지 보려면 이 열이 필요합니다. 학습 입력으로 쓰라고 넣은 열이 아닙니다.

라벨링을 다시 한 것이 아닙니다. 지시문은 원본 데이터셋의 meta/episodes.jsonl 에 이미 있고 그것을 에피소드 번호로 붙였을 뿐입니다. 붙인 결과:

행 2,044,657 · 지시문 334종 · 지시문 없는 에피소드 0

기존 열은 하나도 안 바뀌었습니다(대조 확인).

접촉 행은 conf 도 0 이다 — labels/robocasa_instr_conf0.parquet

새로 올린 파일입니다. 앞의 두 파일은 그대로 둡니다. 바뀐 것은 conf 한 열뿐입니다.

fixed == 1 인 행의 conf 를 0 으로 내렸다.
ratio · 등급 A~E · instruction · task 는 한 글자도 안 바뀌었다.

왜 필요한가. 가드가 ratio 만 1.0 으로 박고 conf 를 안 건드리면, `conf` 로만 압축 여부를 정하는 쪽에서 가드가 적혀만 있고 작동하지 않는다. 접촉 구간의 conf 가 0.6 으로 남아 있으면 역치를 넘어 그대로 압축된다. 두 판의 평균 conf 가 0.4267 로 똑같았던 것이 그 증거였다.

                      접촉 판        대조군
평균 conf        0.4267 -> 0.3594   0.4267 (안 바뀜)
conf == 0 비율   0.135% -> 16.67%   0.135% (안 바뀜)
평균 배속        1.4367 (그대로)    1.5229 (그대로)

대조군은 fixed 가 전부 0 이라 값이 안 바뀐다. 같은 코드로 낸 것이라 대조는 그대로 된다.

등급 A~E 는 안 바뀌었다. 비싼 것은 VLM 이 매기는 등급뿐이고 그 뒤는 산수다. 규칙을 달리 보고 싶으면 등급에서 conf 를 다시 만들면 된다.

이것은 라벨 파일의 이야기다. 평가 도중 동작하는 게이트는 VLM 이 그 자리에서 conf 를 내므로 이 파일을 읽지 않는다. 온라인 쪽 가드는 액션에서 접촉 경계를 따로 계산해야 한다 -- 라벨만 바꾸면 온라인도 고쳐지는 것이 아니다.

통계

  • —행 2,044,657 · 에피소드 7,200
  • —태스크 24
  • —배속 분포 1.0x 21.4% · 1.5x 60.1% · 2.0x 11.0% · 2.5x 7.5%
  • —평균 배속 1.523
  • —접촉으로 1.0 고정 0.0%