Плаваючая абсалютная правда: фіксаванне версіі набора дадзеных у сэтапах адзынакоўвання LLM
Працэўнік з падрахунку канфігурацый задач lm-evaluation-harness паказвае, што практычна ніхта не прыкрепляе конкрэтную версію набора дадзеных. Дазвольце дакладна раз’ясніць, што гэта значыць для пораўнання рэйтынгаў, і як пераглядаць своія власныя ацэнкі.
Калі рэзультат теста LLM зменшыцца або падвышыцца между двума запускамі, вам трэба з’ясавіць, чы гэта сталося через змены ў самай модэлі чы ў дадзенах, на якіях веліся оцэнкі. У большасці систем адкрытай евалюэйцыі няма нічога, што фіксавало бы другую можлівасць. Няўзабавна аудыт каталогу заданняў у lm-evaluation-harness, аднаму з найбольш падаўжліва выкарыстоўваных інструментаў для адкрытых модэляў, паказаў, што з 841 настройкі толькі адна мела поле для змены версіі дадзеных, прычаму гэя значэнне ўсё ж не было версійным ідентыфікатаром. У гэтым артыкуле паспакою расказваецца, як была вырачана гэтая цифра, чаму знаменавальнік мае такое ж значэнне, як і чыслаўник, як іншы набор параметраў даў працупадныя наследкі, і як можна адрабатыць тую ж перапалоху для сваіх сабскрыпцый.
Галоўная цифра і тая, якая была адкінута
Этот показнік варта даследзіць часткова з-за таго, як спачатку выйшла прычына його абэранціяў. У ранней версіі падрахунку было зазначана, што адна з 13 986 конфігурацыйяў зафіксавала свае даны, што ўзялося зусім іншая, значна выражэней цифра. Ёе адмовіліся прыймаць за калекасць гадзінкі пазней. З тых 13 986 файлоў 10 391 не маюць сабстаятаг назвы набору даных, а перадаюць яе з бацькага файла через include:, а 2 966 — цэлкам групавыя файлы, якія не маюць назвы жаднага набору даных. Жодны з гэтых типоў файлоў не мае нічога, што можна было б зафіксаваць, таму ўрахоўванне іх падымае знаменавальнік, чым рэзультат выглядае значна сильней, чым ён на самай працэ. Аналітыкі зазначылі, што гэта вось другі раз за адну недзелю, калі значны показнік з’явіўся ўнаследак неправильнага адгледзення таго, што містыць знаменавальнік, і гэта є корыстным паўтарэнням для всіх, хто сам створыць показнікі.
Пасля выправленняў атрыбуты ўстановкі задач такія: у lm-evaluation-harness 841 ўстановка задачі называе набор дадзеных безпосереднья, а толькі адна з яных заповнюе поле з інформацыяй пра версію. У гэтым поле знаходзіцца refs/convert/parquet — пасылак, який выбірае формат зберагачвання, а не конкрэтную версію дадзеных. У практычнай прагматыце жадная з установкаў не фіксуе конкрэтную версію; кожны запуск аналізуе дадзеныя на стане, які ў той дзень мае выходны набор дадзеных.
Ключовыя нараджэнні ў стислым відзеце
- З 13,986 установкаў задачі 841 называе набор дадзеных безпосереднья. Рэшта 13,145 дзеўяцься на 10,391 файл, якія успадковуюць набор дадзеных через
include:, і 2,966 файлаў-групавак, якія не маюць свайго сабэтнага набора дадзеных. - Толькі адна з тых 841 установкаў задае ключ версіі або SHA, і тое, што ў гэтым ключы знаходзіцца —
refs/convert/parquet— выбірае формат файлу, а не фіксуе конкрэтную версію.
load_dataset, а з іх толькі 2 задаюць параметр revision=.openai/evals выкорыстоўвае працоўны падход: 455 з яго 463 ацэнкаў чытаюць файл samples_jsonl, які знаходзіцца ў рэпазітарыі, і які падтрымліваецца 722 файламі дадзеных, зберажанымі ў рэпазітарыі. Іх адпаведныя базовыя даны не можуць змініцца, але могу стаць застарэлымі.huggingface.co. Вынік аудыту паказвае, што змены могу застаць непазначанымі, а не тое, што такія змены справдзіліся.Коротка
Сэт каскад адзыякаў на самай працоўцы ёсць граф завіснасцяў, і команды праектаў прайшліся на завіснасці з важлівых прычын. Прааналізаваўшы кожную настройку задач у lm-evaluation-harness, выкарыстоўваючы набор дадзеных, па якім кожная з іх ацэнюе рэзультаты, і шукаючы фіксаваную версію, быў вылучены адны кандыдат, які на самай працоўцы не быў фіксаваны. Аналіз таго, як дуго гэтыя настройкі застаўаліся незменнымі, паказаў, што для большасці набораў дадзеных настройка, якая іх аднасіла, не была зменена прыблізна за адзіннаццаць месцаў. Усё гэта не паказвае, што які-небудзь опублікованы показначык тэста ўскладнення ўсунуты. Гэта паказвае, што якщо ён стане некоректным у зв’язку зі змянамі ў дадзеных, сам сэт адзыякаў не дастане жадных сігналоў.
Чаму тэст ускладнення ўсунення патрэбуе фіксаванай версіі набора дадзеных
Модель, яка працюе на тэставанні, — не ўсё, што можа змяніцца. Кожная настройка задання апісвае набор дадзеных, напрыклад alexandrainst/m_truthfulqa, OALL/ACVA або CogComp/mc_taco, а набор дадзеных, які розмешчаны на публічной платформе, ўважаецца жывым артыфактом. У яго є адпаведальныя за його падтрымку, і ён прымае корэкціі, змяны ліцензый, перераспад дадзеных, новыя настройкі, а часам і тыхае выправленне пазнакі, пра якую вядома, што ёна была некоректная. Такая дзеяльнасць ўскладнена і большасцю часу є корыстной.
Проблема заключаецца ў тым, як цэлкам паўтараецца процес порэвання. Рэйтынг мае значэнне толькі ў стосунку да стабільнага крэатыву. Калі новая версія моделі дае іншы рэйтынг, мы даведамся до новых вясканняў пра саму модэль. А калі змянююцца сабе самыя даны, мы бачымо толькі артыфакт вимеравання, який выглядае як рэзультат. Без задапісанага варыянта немагчыма розразліці гэтыя два варыянты ні пасля аналізу, ні ў момент выканання оцэнкі.
Рэйтынг, які не быў зафіксаваны, — цэх вимеравання, калі параметры якога ніколі не былі задапісаны.
Гэта тая ж самая логіка, якая викорыстоўваецца у файлах блакіравання ў проектах на JavaScript: дыапазон у файле package.json, напрыклад ^4.2.0, дазволяе системам тыхо адключаць новы код, а файл блакіравання фіксуе точную версію, якая была выбрана. Даныя для оцэнкі таксама заслуговуют на такое адносленне.
Як была вырачана колькасць
Саме ў методалогіі знаходзяцься большасць цікавых рашэнняў, па-выключна ў частцы, якая стосуецца знаменавальніка.
- Рэпазітарый:
EleutherAI/lm-evaluation-harness, клонаваны з усім історыяй зменаў за дапамогою--filter=blob:none --unshallow. У ўсьміх клонаваных версіях было 4,115 комітов з 2020-08-27 да даты HEAD 2026-09-10; замеры былі выконаны 12 сябрэля 2026 года. Каталог постаўляецца ў стані постаўленых змян, таму празьледніяе выканання працэса даўна разныя цыфры. - Перагляд налашчэнняў: кожны файл типу
.yamlі.yml, які знаходзіцца ў паддырэктарыіlm_eval/tasks. Для кожнага файла скрыпта выкалікаў значэнняdataset_pathабоhf_path, шукаў наявнасць пахаваных значэнняўdataset_revision,revision,dataset_shaабоsha, і фіксаваў, чы выкарыстоўваў файл параметрinclude:.
git log, якія паказвалі дату адправы і последней змены файла; гэтыя даныя паўставаліся на адлік часу з моменту коміту HEAD, а не за сучасной датой, тады ціфры застаюць стабільнымі з паследованнем часу.Праз такое фільтраўанне засталося 841 прынцэпная конфігурацыя, якія аднасоўваюцца да 273 разных набораў дадзэных.
Наскількі старыя ўсе гэтыя конфігурацыі?
Старэнне трэба было адзначыць двума способамі, адколькі простая вычысленне виявілася падводнай каменем, і гэта стало ясна толькі пасля ручнай перапрацавкі.
Параграф за параграфам, медыяны час з момента последней змены становіць 729,8 дзён. У 691 з 841 параграфа (82,2%) не было жадных змян прыблізна год за час, а 551 параграф (65,5%) ніколі не быў рэдагаваны пасля свайго стварэння.
Этыя цыфры перакручваюць рэальную ситуацыю. Лішыя пяць змян прынялі 50,9% ад усіх 841 параграфа, а ўсьго одна змяну, decc533d, прыняла 272 з іх за адзін дзень. Таму распад параграфаў не адбівае 841 незалежную змяну, якія развіваюцца самастоятельна; ён адбівае кальку большай часткі змян за раз плюс незначную колькасць змян, якія адбыліся пазней.
Якшчэ групаваць па наборах дадзеных, а не па файлам, можна усунуць гэта кластераванне:
- Для медыянага набора дадзеных з момента последней змены пасляў 547,9 дзён.
- У 196 з 273 набораў дадзеных (71,8%) час з момента последней змены прыблізна перавышае год.
- У 245 з 273 набораў дадзеных (89,7%) час з момента последней змены прыблізна перавышае 180 дзён.
Цяжыню па кожным наборам дадзэнняў лепей усьматрываць, каліхо ён вытрымае працову аперацыю кластэрування. Медыя значэнне заўсёды станавіць апошнія восемнацца месацоў, а дзевяць з дзесяці набораў дадзэнняў працуюць больш шасці месацоў.
Падтрымка фіксаціі, але рэдкая ўжытак
Было бы несправедліва крытыкаваць гэтую пакетную сістэму, якбы ёй не было можлівасці фіксавацыя, але такая можлівасць існуе. Функцыя загрузкі ў яе складзе — стандартная бібліятэка Hugging Face datasets, і функцыя load_dataset прымеўша аргумент revision. У частцы заданняў на Python з 15 файлаў, якія выкарыстоўваюць load_dataset, 2 файлы пасылаюць параметр revision=; у той жа час у 673 файлах на Python у гэтым каталогу толькі адны з гэтых два файлы викорыстоўвае параметр фіксаціі, прычаму ён аднасецца да рэферэнса пул-рэквеста.
Хоча можлівасць фіксавання існуе, яго практычна ніхто не выкарыстоўвае, і ніч гэтага процесу не спрыяе тому, каб учаснікі прыменялі яго. Калі стандартны варыянт — плаваючая настройка, тады плавае каталог з 841 настройкай, таму што самэ лявары стандартныя і ў большых каталогах.
Якщо вы адпавядаеце за ацэнкі, найдешавшы спосаб — гэта сёгодні шуканне поля для перазначэння версіі ў вашых власных вакантах і перакананне, сколькі рэзультатаў будзе.
Адваротны варыянт: даны, прынятыя ззаўні, у openai/evals
openai/evals адпавядае на тую ж запытку, але з іншага баку, і яго падход не ўсё такі вядома гэршы. Серед 463 настройкаў ацэнкі 455 чытаюць файл samples_jsonl, які знаходзіцца ў самым репазітарыі, і які мае 722 файлы дадзеных для ўтрымання іх. Асалодныя даны таксама прыносяцца ззаўні, тое значыць, што яны фіксуюцца за прыродой: даны версіяваныя праз Git разам з усім іншым.
Працэспект заключаецца ў ідыяльной возможнасці павторэнтзапуску: ацэнка, якая спачатку была выканана у 2024 году, можа быть павторена з ідэнтычнымі за вялічыню дадзенням. Цена — грошы. Копія, куплена у виробніка, ніколі не атрымлеўае паслядніх правак, таму хоць весь комплект не можа змініцца, ён можа паступова стаць сваеўродным музеем, дзе новыя моделі ацэнююцца на адповідачы, у якіх памылкі былі выправлены ў іншых частках калісця.
Жадны з комплектаў не выбірае трэці шлях: фіксацію конкретнай версіі і ўмышленае яе прыдвіжэнне. Один з іхіх застаецца мобільным без жадных запісаў; другі — застойным без апдэйтаў. У обох случаях выбор здзейсніваецца за замовчанням, а не на падставе рашэння.
Што не паказвае меры
Межы аналізу маюць такое ж значэнне, як і яго рынакі.
- Ніяных змян у наборах дадзейнаў не было зафіксавана. Палітыка сеті аптынговага сераўера адмовілася у стварэнні з’ёеднанняў з
huggingface.co; проксі вярнуў код 403 пад час запыту CONNECT з обох працоўных станоў, таму не было можнасці запытаць пра інформацыю па адрасе рашэння та дату последней змены. Усё, што тут пісана, стосуецца таго, чы розпізнаюцца змяны, а не таго, чы яны наступілі. - Статус «Unpinned» не значыць, што ўсё некоректна. Большасць гэтых набораў дадзейнаў, верагодна, ніколі не змienяліся. Утверждэнне стосуецца відсутнасці кантролю, а не наявнасці бяглыні.
- Статус «Stale» не значыць, што да гэтага ніхто не стараўся. Канфігурацыя, яю ніхто не правіў працэс 700 дзён, можа быць цяперашняй і точной. Вік паказвае толькі, што ніхто больш яе не пераглядаў, што ўжо не тое ж самае, чым бягліна.
promptfoo, deepeval і ragas, ўжо ў сабе являюцься бібліятэкамі, а не реестрамі, і у яных няма падобнага каталогу задач у формате YAML, таму рэзультаты не маюць да яных ніякога значэння.include: — гэта суб’ектывае рашэнне. Болей строгая інтарпрэтацыя магла б спытацца, чы не фіксуюць родныя конфігурацыі значэнняя за сваімі дзецячымі конфігурацыямі. Їх было пераканано, і яны гэтага не робяць.Частыя запытанні
Ці тады публікуемыя рэзультаты тэстаў ненадзеяны?
Ні, і такую інтарпрэтацыю трэба адхіляць. Няма конкретнага кантролю. Рэзультат стае сумнівным толькі тады, калі зменяюцыся базовыя даны; аудыт паказвае, што як толькі гэта выйдзе, система не захоўвае жадных записаў, якія дазволілі б пазнакаміць гэта пасля.
Чаму проста не пераканаліцьваць, чыяжы зменіліся наборы дадзэных?
Для гэтага трэба з’явіцца на huggingface.co, каб выявіць версіі набора дадзэных, але правіла сеті практыкі заблокавалі гэта дзеянне, выдаючы код 403 пад з’ўязкам CONNECT як у хмарным, так і ў локальным комп’ютеры. У звязку з гэтым узамен на аналіз слабых сігналаў вываркі былі скорачаны да таго, што можна паўнаста пераканаліцьваць толькі на адной базе дадзэных, і самэ гэта прычына таго, што вынік стосуецца больш зафіксавання, чым рэальных змен.
Чы зафіксаванне завжды ўсё правильнае рашэння?
Не абавязкова. Зафіксаваныя тэсты ніколі не выяўляюць справжніх парадаксоў у некоректных атрыбутах, і самэ гэта дазволяе openai/evals заставацца абсалютна воспавямлемым, адночасна стаючы паступова неточным. Болей адпаведная політыка — гэта «зафіксаваць і прагнуць»: зафіксаваць версію, намерна перашырzyć яе і задаць лог кожнай змене, чаго практычна ніхто не робіць.
Як можна пераканаліцьваць свой сэт тэстаў?
Аналізавайце апісанні вашых задач, выявляйце назвы полей з датасэту і шукайце ў тых файлах якія-небудзь змены чы суфіксы SHA. Спявазанне другага падсчыту да першага — гэта метрыка, пра якую йдзе мова. У аудытным звярненні было зафіксавана прыблізна трыдцать секунда обробкі на тыячу файлоў, таму гэта недорогі спосаб для адключэння да процеса CI.
Заключанне
- Спрыяйце датасэтам для ацэнкі як залежнасцям: фіксуйце точную версію разам з кожным рэзультатам, які вы хочаце парабяліць.
- Будзьце насторожны ўжо да драматычных спявазанняў, пакуль не перагледзіце, што мае значэнне ў знаменавальніку; успадкованыя і аграгаваныя настройкі практычна ператворылі незначныя нараджэнняя ў пахамлюючыя.
- Данные, якія змінююцца, і даныя, якія застаюцца незменнымі, выклікаюць проблемы па розныя бакі: адні змінююцца без следа, іншыя старэюць без корекцій. Метод «фіксацыя-пераследжэння» з журналам змян дапамагае ухіліцца ад обох проблем.
Конкрэтыя адпаведнае запытанне для кожнай команды, якая адрабоўвае ацэнкі ў CI, такое: калі рэйтынг зміняецца между запускамі, што самэў вашай наладзе паведамляе вас, чы гэта змяніўся модель чы даны? Якшо адпаведзь — нічога, тады поле для перасмотру ў ваказаннях задачі — гэта самое дашчавае месца для пачатку. Вы можетэ адразу пераглянуць каталог задач lm-evaluation-harness і рэжыстр openai/evals, ўбачыць два падходы.
Супаканае чытанне
- Абэцедны карта паняўства AI-інжынерыі і моменты, калі яны маюць значэнне — Дазвольце вам дазнацца, якія паняўства AI-інжынерыі вялікаважна для таго, каб система ўзагалі працавала, якія маюць значэнне пасля стварэння для прыменення і якія можна адклаць.
- Кераванне LLM-ам як суддзёю як жывай системай прыменення — Дазвольце вам дазнацца, як чатыроэтапны цикл жыцця Netflix — даныя з абсалютнаю правдой, навчанне па спецыяльным критэрыям, безпечная запуск і стацыонарны монітарынг — дапамагае падтрымваць точнасць LLM-суддзі на великіх масштабах.