videommu: open-ended predictions corrupted by xlsx round-trip, silently zeroed or crash
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 1/5
- Tempo estimado
- Menos de uma hora
- Facilidade para iniciantes
- 90/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- pandas, python
- Domínio
- data, machine-learning
Direção de pesquisa
Comece em evaluate de vlmeval/dataset/videommmu.py (linhas 668-706) e, em seguida, inspecione parse_open_response e eval_open para confirmar que as previsões open-ended são listas. Revise o comportamento de dump/load de vlmeval/smp/file.py e reproduza o round-trip de pandas xlsx mostrado na issue. O trabalho estará concluído quando o cache de scores preservar os dados list-valued de parsed_pred e o scoring completo de VideoMMMU não calcular mais scores incorretamente de forma silenciosa nem falhar.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Bug
vlmeval/dataset/videommmu.py, evaluate (lines 668-706):
storage = get_intermediate_file_path(eval_file, '_score') # defaults to .xlsx
...
data['parsed_pred'] = [ans[idx]['parsed_pred'] for idx in data['index']]
dump(data, storage)
...
score = aggregate_results([row for _, row in load(storage).iterrows()])
parse_open_response (line 140) returns a list for open-ended items. Writing a list column to xlsx serializes it as the string "['thirty', 30.0]"; loading it back yields that string. eval_open (line 382) then does for pred in pred_i — iterating a string character-by-character, so every open-ended item is scored wrong (single-char substring matches).
If the list column fails to write, dump (vlmeval/smp/file.py:183-187) falls back to .pkl, but load(storage) still targets the .xlsx path and crashes.
Reproduction
import pandas as pd
df = pd.DataFrame({'parsed_pred': [['thirty', 30.0], 'A']})
df.to_excel('/tmp/t.xlsx', index=False)
print([type(x).__name__ for x in pd.read_excel('/tmp/t.xlsx')['parsed_pred']])
# ['str', 'str'] — list became "['thirty', 30.0]"
Impact
Every full VideoMMMU run (includes the open-ended Adaptation subset) either silently zeroes open-ended accuracy or crashes at the end. MCQ items unaffected (plain-string parsed_pred). Silent / crash, no warning.
Fix
Use pkl for the score cache so list-typed parsed_pred survives the round-trip:
storage = get_intermediate_file_path(eval_file, '_score', 'pkl')
- Linguagem predominante
- Python
- Estrelas
- 4.4k
- Forks
- 768
- Merge médio
- 1d 20h
- PRs com merge (30d)
- 20
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de open-compass/VLMEvalKit
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
open-compass/VLMEvalKit#1697 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
open-compass/VLMEvalKit#1695 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
open-compass/VLMEvalKit#1690 · 3 comentários ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
open-compass/VLMEvalKit#1589 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
open-compass/VLMEvalKit#1580 ·
Todas as issues de open-compass/VLMEvalKit
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100