Дыстыляцыя мяккіх метак для SQL-агента на 0,8B: чаму перамог слабейшы настаўнік Qwen
LoRA-файнцюнінг на top-k мяккіх метках з замарожаных трас давёў SQL-агента на 0,8B да 55 з 220 задач, а слабейшы настаўнік Qwen перамог мацнейшую мадэль GPT.
Крыніцы: Small-Model Distillation — Part 2: Off-Policy Soft-Label KD for a 0.8B SQL Agent
Короткая версія
У попераднай працэўнай версіі агент на базе 0,8 мільярда параметраў пераканаў 1 з 220 рашаных задач на 46, змусіўшы яго копіюваць большы „вучыльнік“ па аднам токену за раз. Часамі змінілася толькі адна дзеянне. Што будзе, калі учнік таксама побачыць частку неяснасці „вучыльніка“, а не толькі той токен, які ён нарэшце выбраў? Усе інша застаецца без змян: крэатывная структура, ацэнка 220 задач, схема дзеяння, учнік на базе 0,8 мільярда параметраў і настройкі фін-цюнінгу LoRA. Толькі сігнал навучэння змініцца.
Замеры „вучыльніка“ былі перэрахаваны. Па кожнай пазіцыі былі зберагнуты вераганні 20 самых верагодных токенаў, а таксама невялікая кількасць, якая прадставляла ўсе іншае. Пасля чаго было паўпораўнана звычайнае навчанне з важкімі токенамі з методам дыстыляцыі з мякімі меткамі top-k. У найкрашчай версіі было рашана 55 з 220 задач, проты 46 у версіі з учнікам на базе важкіх токенаў і 49 у сумаванай версіі з важкімі токенамі.
Найбольшая цыфра ў загалоўку не ўсё ў тым, што ўважаецца найцікавейшым. Мяккія меткі пагоршылі сітуацыю ў двух з восьмі тэстаў з аднаго джэрага. Найлепшы вучыльнік таксама не быў найсільнейшым. Qwen, слабейшы модэль з той самой сям’і з рэйтынгам 96/220, значна адносна точней падражніў своі жы выходы, чым сільнейшы модэль GPT (115/220), таму яго верыятнасці далі учніку болей чысты урок. Праўая перамога настала праз сумешчанне двух джэраў.
Аднача ўсё ж трэба згадаць адну застэрэжнасць. Верыятнасці токенав GPT ніколі не былі доступныя. Выходы GPT, якія тут аналізаваліся, былі оцененыя Qwen, таму яны ўжо ўступнік, а не справжняя дыстыляцыя логітав GPT.
Што тэставалася
Гэты шырэй цель — падбірлівае пасілкі малых модэляў у выпанні спецыфічных задач. Агент — той самы агент для парадксавання SQL, як і ранейш. Ён прымея проблему карыстальніка разам з кантрольным кодам SQL, можа аналізаваць базу дадзеных SQLite, запускаць дапыты, чытаць рэзультаты і адправляць выправлены код SQL. Оцэнка выконвання даецца на адпаведнасць з закрытымі, дэтэрміністычнымі тэстамі, без удзеле судды з LLM.
Ранейшы тэст з hard-tokenамі вялікім чынам паказаў, што малы модэль можа працаваць у таком цыкле. Ненастроены базовы модэль пераважна павтараў дзеянні і ніколі нічога не адправляў. Пасля трэнавання з hard-tokenамі ён чашча аналізаваў, запускаў дапыты і адправляў рэзультаты.
Адаптаванне пад час трэніравання з жорсткімі токенамі ёсць прымітным методам. Учню працаваецца павінен воспаваць той токен, які напісаў вучыцель, без жадных падказакаў пра тое, насколькі вучыцель быў впэўнены, што ўсё інша ён взяў у расчыт, чы рэшэння, якое ўзяло другое месца, было майжэ такім жа хорашым. Для SQL такая відсутная інфармацыя можа маты значэнне для назв таблей і столбцоў, умов, з’ўязкаў, літэральных значэнняў і сынтаксі структурованых дзеянняў.
Тады выступала пытанне, чы падвышае метод адсталення з мяккімі меткамі тыпу top-k эфектывнасць таго ж агента з 0,8 мільярда параметраў, калі сліды і крэйтарыўскіі стандарт залішаюцца незмяннымі.
Поручваліся два пункты выйска. Адным была базовая мадэль unsloth/Qwen3.5-0.8B. Іншым быў адаптар жорсткіх токенав для Qwen3.5-0.8B, які ранейш быў адучаны на успішных траекторыях з мадэлі Qwen3.5-35B-A3B 8-бітной. Іншымі словамі: чы трэба пачынаць трэніраванне з мяккімі меткамі з нуля, чы продаваць яго з таго, што ўжо ёсць у варыянцы з жорсткімі токенамі?
Задача агента для SQL
Установка адаптавана да падзіць як і падчас практыкі з жорсткімі токенамі. Кожны заведамць мае проблема корыстніка, багавы запіт і базу дадзеных SQLite. Мадэль выбірае аднойчы з структураваных дзеянняў: пераглядае схему, выкананае SQL або надае гатовае SQL. Заведамць лічыцца рашаным толькі тады, калі наданае SQL праходзіць скрытыя тэсты.
Тыповы маленькі, але рэальны заведамць: у базе дадзеных chinook корыстнік хочаць найновейшы track_id, а пасля хочаць выкарыстаць яго для фільтрацыі рэядкаў у табліцы track. Багавы запіт выглядае так:
WITH vars AS (SELECT COUNT(*) AS vars_id FROM track)
SELECT * FROM track WHERE track_id = vars_id
Гэтыя недагодзіны не стосуюцца фарматавання. COUNT(*) не ўтварае найновейшаг ідэнтыфікатора, таму патрэбна парадоксальная палатка на кшталт MAX(track_id). Модэль должна вырашыць гэта ў рамках ціклу інструмента: можа, пераглянуць схему, запрацаваць прыбор, прачытаць адзінакі і, нарэшце, адправіць SQL у абсолютна структураваны фармат, які прыймае сістэма.
BAML, як скраценне ад Boundary Markup Language, яшчэ і дае аб’ект запіту як шар структураванага выходу. Ён візначае форму рашэння і складае запіт, які надаецца модэлі. Вольны стыль пісьма вучыльнікі ніколі не ўходзіць у даны для навчання учня; модэль вучыцца канонічныя JSON-рашэнні, якія складаюцца з короткага draft і выконвальнай output дзеяння.
{"draft":"Need schema first.","output":{"action":"inspect_schema"}}
{"draft":"Test a candidate query.","output":{"action":"run_sql_query","sql":"SELECT ..."}}
{"draft":"Submit corrected SQL.","output":{"action":"submit_sql","sql":["SELECT ..."]}}
Кожная перацэўка воспалоўвала настройкі пакананняя, таму ўнікальным элементам, які змініўся, быў сігнал трэніравання. Две настройкі заслуговуюць на адзін параграф. Ліміт серыі 8192 паводзіцца пра загальны бюджэт для запіту і генеравання разам: сістэмны запіт, заданне, пакананнія, схема, рэзультаты запыту, інструкцыі па структураваным выходзе і рэзерв для генеравання — усе гэта дзеліць гэты бюджэт. Максымальная колькасць генераваных токенав паказана окрэма, таму што яна абмежвае адзіны вызов модэлю. Учнік можа чытаць дзялёгі стан, але ў кожны раз прымусова павінен выдаты адну кампактную дзеянне. Рэзультаты аддаюцца праз выходы ў тэрмінале і метрыкі паведання, такія як паданні, некарэктныя паданні, бягі SQL, зупінкі з-за павтарэння дзеяння і зупінкі па максымальнай колькасці разоў.
Найлепшыя учнікі не паспяшаюць галоўная прычынаю з JSON. Яны без проблем доходзяць да submit_sql. Складнай часткай ёсць адгук SQL і вярнэнне пасля таго, калі праба прымусова заканчываецца неудачна.
Ідэя трэніравання
Процэс дыстыляцыі жорсткіх токэнаў дае студэнту адны цэльны токэн на кожную пазіцыю. Дыстыляцыя мяккіх лэйблаў замест таго дае маленькія распады верыятнасцяў. Падазроўцам, цэль учыцеля містыць токэн табліцы, як у ... FROM users .... Пад час трэнавання жорсткага тыпу наступным токэнам счытаецца users. Пад час трэнавання мяккіх лэйблаў таксама можна ведаць, якую верыятнасць учыцель надаў калькам блізкіх альтэрнатываў. Выбраны токэн застаецца значымым, але студэнт таксама бачыць, што дзеяныя альтэрнатывы былі бліжэй за іншыя.
Зберагчыць верыятнасці для всіх токэнаў слоўніку ёсць дорога задача для большога мовнага модэлю. Словнік можа містыць сотні тысяяў токэнаў, а кожна рашэнне учыцеля стосуецца многах пазіцыях-цэлях асістэнта. Практычны компроміс — спаржовая версія: 20 самых вялікіх верыятнасцяў учыцеля на кожную пазіцыю-цель асістэнта, плюс залішковая маса для всіх іншых токэнаў.
Чаму трэба заставаць хвост? Спачатку сума 20 найбольшых значэнняя верыятнасцей складае 0,996. Што застаецца — 0,004 — яшчэ належыць да распаду вучыльніка, і якшча падняць суму 20 найбольшых значэнняя да 1,0, студэнт будзе мець занадто высокую самавяроўчанасць. Таму цяль намерна ствараецца так, каб памятаць, што частка даных застаецца за межамі таго, што было зафіксавана.
Гэты падход заўсёды ёсць па-іншаму, чым політыка. Студэнт вучыцца з даных, збірлена раней, і ніколі не дзеяе пад час выканання задач.
Короткае поясненне коду
Найпросты спосаб разумець гэты метод — сочыць за аднай строчкай праз весь працэс апрацоўкі. Для „мягкіх“ метак не была створана новая асяроддзе для агента. Тыя ж успішныя рашэнні вучыльніка з праблемы з жорсткімі токенамі былі перызнаены, практыкуваны з тым жа фарматам запіта BAML, а пасля — дапрацаваны дапамогаю інформацыі пра верыятнасці для токенав-целей асістэнта.
Ёсць рэяд для навчання з адзінаковымі токенамі пад наглядам (SFT). Пад час SFT адбываецца навчанне на парах «вхід-выход», дзе толькі токены з адказамі вплываюць на показнік падбірання:
row = {
"messages": conversation_before_teacher_decision + [
{"role": "assistant", "content": canonical_decision_json(teacher_decision)}
],
"teacher_draft": teacher_decision.draft,
"teacher_action": teacher_decision.output,
}
Рад з мякім пазначэннем застаўляе тыя ж канонічныя паведамленні і метаданы вучыльніка, а таксама атрымвае балы за токены, навярнутыя вучыльнікам у мэтавых пазіцыях асістэнта. „Навярненне вучыльнікам“ значыць перэдачу вядомага мэтавага тэксту модэлю верыятнасцяў і запытанне, токен за токенам, насколькі верыятны быў гэты тэкст у сваёй кантэкстуальнай сіткі. Зберагаюцься лог-верыятнасці, а не сырые, каліж тыя ў лічбовым сэнсе ўзятківей для запісу і трэнавання:
row = {
"messages": [..., {"role": "assistant", "content": target_decision_json}],
"distillation": {
"probability_model": "Qwen3.5-35B-A3B 8-bit",
"top_k": 20,
"row_weight": 1.18,
"token_scores": [
{
"position": 1661, # full-sequence token position
"target_token_id": 412,
"target_logprob": -0.21,
"top_token_ids": [412, 879, 91],
"top_logprobs": [-0.21, -2.81, -3.51],
"top_mass": 0.90,
"tail_mass": 0.10,
}
],
},
}
Функцыя ацэнкавання мае адзін задань: взяць застойны радок і надаць яму верыгоднасці токэнаў. Ацэнкаўчык Qwen3.5-35B-A3B 8-бітны ніколі не прасіцца пісаць новае рашэнне. Прыказка адобразваецца без адпаведзі дапаможніка, цэлыя последовальнасці — з яе, а цэльны фрагмент ацэнкуецца по аднаму токэну:
prompt = chat_template(messages[:-1], add_generation_prompt=True)
full = chat_template(messages, add_generation_prompt=False)
prompt_ids = tokenize(prompt)
full_ids = tokenize(full)
target_ids = full_ids[len(prompt_ids):]
prefill_teacher_cache(prompt_ids[:-1])
driver_ids = [prompt_ids[-1]] + target_ids[:-1]
for i, target_id in enumerate(target_ids):
logits = qwen_35b(driver_ids[i]).logits
logprobs = log_softmax(logits)
top_ids, top_logprobs = top_k(logprobs, k=20)
save_token_score(
position=len(prompt_ids) + i,
target_token_id=target_id,
target_logprob=logprobs[target_id],
top_token_ids=top_ids,
top_logprobs=top_logprobs,
tail_mass=1.0 - sum(exp(top_logprobs)),
)
Маскаванне толькі для асістэнта не зменілася параваць з рэжымам hard-token. Токены запытку ўтвараюць кантэкст, а токены-цэлі асістэнта — элементы надзору. Гэта мае большое значэнне для агента, чым для звычнага адпаведзення на запыткі, адколі запытка містыць інформацыю пра схему, ранейшыя рэзультаты выкарыстоўвання інструментаў і рэзультаты SQL. Гэтыя токены існуюць для таго, каб на іхней аднойчыні будуць ствараны умовы, а не для ўзнікнення прыкладоў:
labels = full_ids.copy()
labels[: len(prompt_ids)] = -100
hard_ce = cross_entropy(student_logits, labels)
Для трэйнінгу таксама трэба большае колькасць тэнзораў, чым у звычнага SFT. Батч, як і раней, мае input_ids, attention_mask і маскаваныя labels, а дадаўна ў яму таксама ўтрымваецца вага для кожнай пазіцыі, ідэнтыфікаторы токэнаў з групы top-k з іх лог-праверыбальнасцю, маска для гэтых k пазіцый і застатковыя праверыбальнасці. Функцыя padding заполняе неактыўныя пазіцыі нейтральнымі значэннямі, таму функцыя аплётаў не зважае на яе без проблем:
batch = {
"input_ids": pad(input_ids, pad_id),
"attention_mask": pad(attention_mask, 0),
"labels": pad(labels, -100),
"position_weights": pad(position_weights, 0.0),
"topk_token_ids": pad(topk_token_ids, [0] * top_k),
"topk_logprobs": pad(topk_logprobs, [0.0] * top_k),
"topk_mask": pad(topk_mask, [False] * top_k),
"tail_probs": pad(tail_probs, 0.0),
}
Умова кантролю — гэта фін-цюнінг з вагамі для жорсткіх токенав. Адзін выбраны токен застаецца цэлью, але крос-ентропія токенав-асістэнтов умножаецца на вагу паверы, якая бераецца з лог-правядзібнасці оценяльніка для той цэлі. Сцэнарый, які лёгкі для оценяльніка, можа мець большую вагу, а той, які малаяць малы шанс, — меншую:
z = (mean_target_logprob - dataset_mean_logprob) / dataset_logprob_std
row_weight = clip(2 / (1 + exp(-z)), 0.25, 1.75)
loss = row_weight * hard_ce
Адаптаванне да [0.25, 1.75] запобегае таму, каб якая-небудзь адзінока, нестабільная рэядка не захопіла весь пакет, пры чым стабільныя рэядкі все равно можаюць значна пераважаць нестабільныя.
У разе мягкіх метак, да функцыі збытку дадаецца элемент, які паспраўляе верыгоднасці. Чыяму следуе — толькі апісанне яго формы, а не точны код:
teacher_top_probs = exp(top_logprobs) * topk_mask
teacher_top_probs *= (1.0 - tail_mass) / sum(teacher_top_probs)
student_logprobs = log_softmax(student_logits_at_target_positions)
student_top_logprobs = gather(student_logprobs, topk_token_ids)
student_tail_prob = 1.0 - sum(exp(student_top_logprobs))
topk_kl = sum(teacher_top_probs * (log(teacher_top_probs) - student_top_logprobs))
tail_kl = tail_mass * (log(tail_mass) - log(student_tail_prob))
loss = hard_ce + topk_kl + tail_kl
Інформацыя пераходзіць ад вучыцеля да учня: тое, што распадае вучыцель, являецца метай учня, і настае штраф, калі для таго масавыя значэння прызначаецца занадта мала верыятнасць. У рэальным трэйнеры крос-ентропія і дыстыляцыя вычыляюцца толькі па сместаваныя позыцыі цэлей асістэнта.
Фактычная падготовка учня яшчэ ўважаецца тонкай налаштовкай LoRA. LoRA, аднаўленне нізкага рангу, заставляе базовую мадэль застацца пераважна заморожанай і прыўязвае маленькія налаштовываемыя матрыцы адаптара да выбраных модуляў атэнцыі і MLP. Гэта дазволіла дышча дарожыць многія запускі без неабходнасці ўсё часы абоўсюды налаштовваць мадэль размерам 0.8B:
student = load_student("unsloth/Qwen3.5-0.8B", max_seq_length=4096)
student = add_lora_adapters(
student,
rank=32,
alpha=32,
target_modules=[
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
],
)
trainer_class = make_trainer_class(Trainer, soft_label_args)
trainer = trainer_class(
model=student,
train_dataset=scored_train_examples,
eval_dataset=scored_validation_examples,
data_collator=distillation_collator,
batch_size=1,
gradient_accumulation_steps=8,
learning_rate=5e-5,
epochs=3,
)
trainer.train()
adapter = save_lora_adapter(student)
Рэальная рэалізацыя адпавядае гэтаму: make_trainer_class вяртае падклас Hugging Face Trainer, які выкарыстоўвае зберажаны спарс-функцыянт top-k плюс функцыянт residual-tail. Заўважыце, як гэта разлічаецца ад онлайн-версіі DistillationTrainer з TRL, у якой оцэнка вучыльнага прыемніка выканана ўнутар самага трэйнера. Усі тры параметры мякіх метак засталіся на значэнні 1.0: для крос-ентропіі, дыстыляцыі і тэмпературы. Тэмпература навмысна засталася без змян, таму што спарс-артэфакты былі заданы як 1.0, і метаю не была студыя з масштабаванням тэмпературы.
Ацэнка напрыканцы ёсць справжнім тэставаннем, а не прымусам з боку вучыльніка. Трэнаваны адаптар вяртаецца да сістэмы SQL-agent і павінен адмахнуцца 220 задач, якія засталіся без удзеле, выкананыя по аднай на раз:
for task in held_out_eval_tasks:
state = start_sql_agent_task(task)
for turn in range(8):
messages = render_baml_messages(state)
decision = model_with_adapter.generate_action(
messages,
max_new_tokens=512,
temperature=0.0,
)
state = execute_action_and_append_observation(state, decision)
if state.solved or state.stopped:
break
results.append(score_final_submission(state))
Большынства ідэй афлайн-дыстыляцыі збіваюцца на гэму пасляпэльнай стадзіі. Учыцель, які выконвае тэсты, пераканальваецца, чы можа учнік спрогназаваць, што зробіць учыцель далей у кантэксце, які сам учыцель створыў. Тэст на рэалізацыю пераканальваецца, чы можа учнік прымкнуць да своіх пакананых раней выбораў, выбраць корыстныя способы дапыткі, ухіліцца ад павтарэння і запрацаваць правільны SQL. Лішыя значэнне другага чысла.
Як працюе эксперымент
Можна было б легка спылучыць гэта з дыстыляцыяю на адпаведнасці з правіламі, але гэта не так. Нічога з таго, што стварыў учнік, не оцінюецца. Учнік вучыцца толькі пазней, на аднойчы зазначаных учыцелем следах.
Даныя прайшлі з расчытку балоў за зашчытаныя, успешныя следы. Дзеянні вучыльніка вялікай часткай вялісь ўжо, а модэль верыятнасцей толькі выявляе, насколькі правдападобны выглядаў кожны выбраны токен у кантэксце. Яна ніколі не прымае новага рашэння. Два наборы даных, якія былі оценены, заставаліся разнымі (следы GPT, оцененыя Qwen, і следы Qwen, оцененыя Qwen), і кожны з іх фільтраваўся па дужыне всей гэтай последовальнасці, адтолькі ўважлівася, што спостарожненні за схемай і ранейшыя выходы інструментаў таксама ўходзяць у тое, што учнік павінен усваяць, а не толькі заканчоўны адказ. Межа: следы GPT лічыліся як оцененыя пры помочы Qwen-proxy і не ацэнюваліся за дапамогою сопных верыятнасцей GPT, а учнік ніколі не дзеяў падчас расчытку балоў.
Да даных, якія былі оценены, былі застосаваны тры варыянты трэнавання:
- Тонкая наладка з вагамі для жорсткіх токенав (контрольна метода). Для кожнай пазухі выбіраецца адзін токен, пры чым кожны радок мае вагу, залежную ад упэўненасці оценяльніка. Гэта ўскладнена тонкая наладка з рэгуляторам упэўненасці. Разлік: гэта не дыстыляцыя з мякімі меткамі, таму што учнік бачыць толькі вагу, а не распад па прыорытэтах top-k.
- Дыстыляцыя з мякімі меткамі па прыорытэтах top-k (метод, які апраноцаваецца). Той самы жорсткі ціль, але таксама ўжо вторы сігнал, які прасіць учніка распаўсці верыятнасці між прыорытэтнымі варыянтамі, якія бачыў оценяльнік, залішаючы рэштку для всіх іншых варыянтов. Разлік: гэта метод, які не выкорыстоўвае політыку навчання і пры яком учыцель прымусова вплывае на працэс навчання праз зафіксаваныя даны, пры чым учыцель ніколі не оцінюе сэрвэты учніка.
Спалучанне выканаў дае найчыстэйшы і найменш складны для розумення рэзультат: больш разнаобразных успешных выканаў плюс багатшы цэль для кожнага токена дае маленькаму базоваму модэлю больш матэрыялу для навучэння, чым кожны з выканаў сам по сабе.
Набор дадзеных і фільтраўванне
Выканы мастаў не былі перагенераваны намерна. Яны былі зафіксаваны з руну hard-token, ўпэўніваючыся, што паўтарныя порэванання стосуюцца сігналу керавання, а не новага цыклу генеравання дадзеных.
У тым пачатковым тыяпе генерацыі як вучыцелі, так і іншы алгорытмы выканалі тыя ж 879 заданняў на трэніраванне. GPT 5.5 medium правільна адпаведзеў на 446 з 879 заданняў, што даў 1046 рэкордаў SFT. Qwen3.5-35B-A3B 8-bit правільна адпаведзеў на 394 заданняў і даў 1232 рэкорды, таму што яго успешныя траектарыі працы былі дыяўальнейшыя. У ацэнцы на 220 заданняў GPT 5.5 medium пастаноўваўся лепшая — 115 проты 96, таму тут тэст з Qwen ўскладнівае аналіз і не ўсвідчае, што ўжо ёсць самы эфектывны вучыцель.
Аргумент пра заменны элементы мае значэнне. Чыстыя меткі GPT 5.5 medium патрэбавалі бы верыгоднасцей токэнаў самага модэлю, а яны не былі доступныя. Таму эксперымент з траектарыямі GPT ставіць болей вузкія пытанні: чы можа скораўчык з той жа сямейкі Qwen дапамогчы ў выборы дзеянняў GPT?
Для кожнай строкі была выведэна і сама фраза, яку насправды вікорыстоўваў BAML prompt у прыстрое. Вядомы цэльны асістэнт пасля чаго быў прымусова пераданы праз Qwen3.5-35B-A3B; разлікі па 8 бітах і токенах былі збераганы толькі для пазіцый цэльнага асістэнта.
Перад пачатком будзь-якага навчання патрэбна пераконтрація двух пунктавых дадзеных: які ўзьём з іх пасвядзяе ў ліміт у 4096 токенаў, і насколькі точна скарыфікатор Qwen састаўляецца з дадзеных кожнага адпаведнага крыніцы. Чым ніжэй значэнне негатыўнай лог-правядзімасці, тым лепяй, адтуды што мадэль верыятнасцей легча можа поясніць цялявыя дзеянні. Самэ гэтая прычына, чаму дадзеныя, самія скарыфікаваныя Qwen, так сільна адрозніцца ад дадзэных, скарыфікаваных праксі GPT: Qwen быў набліжна ў 2 разы болей впэўнены ў своіх сопакойных дадзеных, чым у дадзеных версіі GPT 5.5 medium. Серэдняя негатыўная лог-правядзімасць цялявага пункту для рэкордоў, саміх скарыфікаваных Qwen, склалася 0.297, а для рэкордоў, скарыфікаваных праксі GPT — 0.876. У кожнай позыцыі, самія скарыфікаванай Qwen, цялявы токен знаходзіўся сярод 20 найлепшых зберажаных токенаў (100.00%), а ў 98.56% позыцый, скарыфікаваных праксі GPT.
Складзены набор пачаткова складаўся з 2278 радоў. Пасля фільтра 4096-х токена засталося 2253 рады, якія былі раздзелены на 2141 для трэніравання і 112 для параболікацыі. Фіксаваныя параметры перасортаў рады пры раздзеле, тады набор для параболікацыі не адбіваў бы парадак выхадных дадзеных.
Настройкі трэніравання
Восьма прабавака склалі галоўную сетку — цэлы перакрыцанне трохоў бінарных выбораў: які выхадны джэрэлы (GPT proxy чы Qwen self), які метод (зважаныя жорсткія чы мяккія меткі) і з чаго пачынаецца трэніраванне студэнта (з базовага модэлю чы з жорсткага-токеновага тэплага пачатку). Ішчы две прабавакі, абе з базовага модэлю і абе на сумаваных дадзеных, адна з вагаванымі жорсткімі токенамі і адна з мяккімі меткамі, далі ўсьго дзесяць трэнаваных студэнтаў. Сумаваныя прабавакі з тэплым пачатком былі адкладзены. Першыя восьмы прабавакі паказалі, што тэплыя пачаткі сільна залежалі ад выхаднага джэрэла, а сумаваныя прабавакі мялі на меты адпаведзець на простыяй запытанне: чы дапамагае сумешчанне вучыльнікаў у базовам модэлі?
Хайперпараметры трэнінгу былі выбраны на адпрацоўкі базовага падходу з вікорыстоўванням хард-токенаў. Для адаптараў быў выкарыстоўваны ЛОРА з рангам 32 і каэфіцыентам альфа 32 для праекцыяў увагі (q_proj, k_proj, v_proj, o_proj) і праекцыяў MLP (gate_proj, up_proj, down_proj). Іншыя настройкі: шчыльнасць навучэння 5e-5, пакет адна екземпляр на прыстрой з 8 крокаў акумуляцыі, тры эпохі, фармат bf16 на GPU NVIDIA, а таксама Unsloth і FlashAttention 2, калі гэта можліва. Іншыя настройкі включалі 5% частку для верыфікацыі, настройку seed=42 і максымальную дужыну последоўнасці 4096 токенаў для повных сэквэнсаў трэнінгу.
Для мягкіх метакілець тэмпература была 1,0, а вагі знаходзіліся на роўні 1,0 як для методу жорсткай крос-ентропіі, так і для методу дыстыляціі. Код зберагае зберажаную масу top-k разам з масай залішковага хвоста — цэлая чысловая корэкцыя для верыятнасцей, якія былі серыялізаваныя у розрозненым варыянты.
Размеры пакетаў дадзеных не былі ідэнтычныя. Запускі з алгорытмам GPT proxy-scored былі трэнаваны на 990 роўнах, запускі з алгорытмам Qwen self-scored — на 1151 роўні, а з’еднаныя запускі — на 2141 роўні. Пры размерэ пакета 1 з 8 крокаў накуплення дадзеных тры эпохі прынеслі адпаведна 372, 432 і 804 абнаўленні оптымізатора. У метакілечках запускаў Base — гэта неналаштаваны мадэль unsloth/Qwen3.5-0.8B, GPT proxy — гэта даны з GPT 5.5 medium, якія былі оцэненыя модэлью Qwen3.5-35B-A3B 8-bit, Qwen self — гэта даны самай модэлі Qwen, якія былі ацэненыя яе самай, а Combined — гэта з’еднаныя наборы даных, якія былі аднаўленыя перад трэніраваннем.
Будзьце абярожныя ўжо да втраты па праверкі. Яны маюць значэнне ў межах аднаго цялевага показніка, але рэзультаты працы з важкімі і мягкімі меткамі нельга пораўняваць між сабою, таму што ўхідныя втраты ў яных складаюцься з разных элементаў. Найменшая втрата па праверкі была у варыянта з базовым Qwen, які сам ацаніў рэзультаты за прыемку важкіх метак, і які рашыў толькі 40 з 220 задач, тады як найкрашчы рэзультат паўстаў у варыянцы з мягкімі меткамі, нават па-справе ў яго втрата былі вышэй.
Падготовка і навчанне адбываліся на разным апаратным забезпечэнні. Апарат з вялікай колькасцю памяці быў зручны для локальнага завантажэння і ацанення мадэлі Qwen3.5-35B-A3B у 8 біт, хоча точнае ацаненне пад кераваннем вучыльніка займала: прыблізна 60 хвілін для дадзеных GPT і 41 хвіліну для дадзеных Qwen. Студэнты навчаліся на GPU NVIDIA. Тыя варыянты працы з аднаго крыніцы, пра якія была зафіксавана трываласць, трывалі апошнія ад 23 да 30 хвілін, а болей большыя варыянты працы займалі апошнія адпаведна 52 хвіліны (з важкімі меткамі) і 55 хвілін (з мягкімі меткамі).
Рэзультаты, арганізаваныя па пытаннях
У першай дыяграме прабаваліся паказаць усё адразу, і гэта спануляла два разныя пытанні: што выходзіць, калі навчанне пачынаецца з базовага модэлю, і што выходзіць, калі яно продовжваецца з модэлю траекторыі hard-token. Таму рэзультаты былі раздзелены па напрамку даследжэння.
Для параджука: вучыльнікі і базовыя варыянты у фіксаванай оцэнцы з 220 заданнямі былі такімі: без дакладнай налаштовкі – 1/220, студэнт з hard-token – 46/220, Qwen як вучыльнік – 96/220, а GPT як вучыльнік – 115/220. Мэтай эксперыменту з soft-label і парадкамі top-k ніколі не быў перамагчы вучыльнікаў. Цель была пацікавіцца, чы можа болей багата сігналізація керавання прыняць студэнта з 0,8 мільярда параметраў да ўсё большых рэзультатаў за аднаковых умов.
Пачатак з базовага модэлю. Усе працаванні з адучанням перамагаюць нэадучаны модэль з рэзультатам 1/220. Адучанне толькі з GPT і толькі з Qwen даў адпаведна 41 і 43 рашытых заданняя, залежна ад методу. Спалучэнне гэтых двух падходаў створыла большую разліку: працаванне з адзважанымі «жорсткімі» токенамі дала 49/220, а працаванне з «мягкімі» меткамі — 55/220, тое ўсьмо гэта прыблізна чвэртая частка заданняя. У абсалютных цыфрах гэта незначна і далёка ад рэзультата найлепшага «вучыльніка» — 115/220, але значэнне крыўціце ў тым, насколькі 0,8 мільярда параметраў модэлю можа падняцца з майжэ нуля, а не ў тым, каб падражнаць «вучыльніка». Для пачатку з базовага модэлю вывод такі: трэба выкарыстоўваць оба «вучыльніка», пры чым «мягкія» меткі ёсць лепшыя за адзважаныя «жорсткія» токены на гэтых спалучаных даных.
Продакцыя з тэмы студэнта з жорсткімі токенамі. Чыртак тут менш ясны. Чэкпоінт ужэ рашыў 46/220 задач. Дадатковая практыка з следамі GPT з вагаванымі жорсткімі токенамі дапамогла яму дасягнуць 48/220, тады калі мяккія атрыбуты для тых сабе следоў прывелі рэзультат знову да 44/220. У случае з самаоцэнкаванымі следамі Qwen патэрн быў працоўны: вагаваныя жорсткія токены знізіліся да 38/220, а мяккія атрыбуты падняліся да 49/220.
Неспадзеваныя нарадкі: мяккія атрыбуты дапамагалі толькі тады, калі оцэнкавальнік і след былі сагласны. Qwen3.5-35B-A3B 8-bit быў слабейшым «вучыцам» — 96/220 проты 115/220 у GPT, пры тым яго верыгоднасці паспадзяраліся з яго сабе следамі, і мяккія атрыбуты там працавалі (49/220), тады калі на следах GPT, ацэнкаваных праз проксі, яны пагублівалі рэзультат (44/220). Сагласнасць была важнейшая за чыстую сілу «вучыцы».
Што змянілася ў цыкле агента. Базовая мадэль практычна ніколі не надавала даных. Метод SFT з жорсткімі токенамі научыў яе входзіць у цыкл і надаваць даныя, але багато з наданых дадзеных былі некарэктныя. Спалучаны метод з мяккімі меткамі знову падняў рэйтынг успеху і ён ёсць найкрашчым за весь час. Усё-такі мадэль надала даныя па 171 заданню і рашыла 55 з іх, што значыць, 116 наданых запітоў не праўілі скрытыя тэсты, а таксама было 39 віпадкаў перыявлення дзеяння.
Гэта ўсё, што можна сказаць пра рэзультаты. Мадэль не паспевае галоўная чынай з таго, што не можа ствараць правільныя дзеяння BAML. Яна паспевае не добра, таму што продавалівае паслабыя рашэнні ў фармаце SQL і іноды застрэгваецца ў цыкле.
Найболее надзяйным сігналам паведання была колькасць разоў перакручвання. Серэгаваная сумарная колькасць разоў перакручвання для мягкіх метакаў склала 3,39, проты 3,48 для методу «тэплыя запускі» з жорсткімі метакамі; разлік настолькі малы, што дадатковыя крокі не можуць поясніць такое павышэнне. Лягкае павышэнне эфектыўнасці даўшы лепшыя параметры дзеяння: больш правільных рэзультатаў, чым пад час «тэплага запуску», менш неправільных, чым пад час сумарнага вагованага запуску з жорсткімі метакамі, а таксама меншы кількасць бягаў SQL і меншых перыядоў, калі досягаецца максымальная колькасць разоў перакручвання. Колькасць генераваных метакаў за кожны запуск ацэнкі не фіксавалася, таму не прадстаўляюцца цыфры па выходных метаках. Цыфры, якія можна без апасцярыбыць прадставіць, падаюць з процэсу навчання: сколькі было метакаў запросу і цэльвога тэксту, загальная дужына последовальнасці і ступень пакрыцця top-k.
Прымечанне па чытанні таблыцоў за графікамі: пад «паданымі» разумеюцца як правільныя, так і неправільныя паданні, а «неправільныя паданні» = паданыя за вырахунак успеху. Калонка «Заданні з спалючыміямі SQL» не ўнікальна — заданне патрапляе ў яе, калі хоць адна з яе SQL-запыткаў выклікала спалючуюю пад час выканання, таму яна можа збігацца з будзь-якім фінальным рэзультатам.
Аналіз неудач
Якшо судзіць выключна на аднойчынай рээкзекуцыі базовага модэлю, рэзультат выглядаў бы занадта адчынны: сумешаныя вучыцы плюс мяккія атрыбуты — і ўсё. Раздзельныя пераклады менш адчынныя. Неспадзяваным фактам ёсць тое, што слабейшы вучыца навчаў лепша, чым сільнейшы, адколі яго верыгоднасці былі адпаведныя яго сопакойным дадзеным. Мяккія атрыбуты набраўшы найбольш на траекторыях Qwen з той жа сямейкі, і явна таксама, калі дадзеныя былі сумаваныя. Яны набраўшы менш на траекторыях GPT, якія Qwen ацэніў толькі па замені, і яны пагубілі клетку для тэплага запуску GPT.
Гэта правдападзецкая: 8-бітныя верыятнасці Qwen3.5-35B-A3B добра апісваюць 8-бітныя дзеянні Qwen3.5-35B-A3B, таму студэнт Qwen з 0,8 мільярда параметраў атрымляе чыстыя сігналы для наследавання.
Працэс запуску заставляе выкарыстоўваць пасляпэўнее слова. Калі вучыльнік навязвае пытанне, стаўка ў тым, чы можа студэнт здагадацца пра наступнае дзеянне вучыльніка, калі кантэкст падобны да яго. Сістэма ставіць болей складныя запітанні: чы можа яна вярнуцца да своіх паканальных рашэнняў, выбраць розумныя способы аналізу, ухіліцца ад петляў і завершыць працу з правільным SQL? Гэтыя два аспекты связаны, але зовсім не адно і тое ж.
Знікненне падыння під час парадыгматычнай перапрацоўкі паведамляе тую ж інфармацыю з іншага баку. У разе 55/220 сумарная перапрацоўка з мякімі меткамі дала знікненне падыння 0,5684, што вышэй за 0,3478 у сумарной перапрацоўцы з жорсткімі токенамі, якая рашыла 49 задач. Найменша вялічына знікнення, 0,2544, належала базовай перапрацоўцы Qwen з самаоценкай жорсткіх токенамі, якая рашыла толькі 40 з 220 задач. Нізкае знікненне, створана пад вплывам наставніка, не абавязкова абяцвала лепшага агента.
Рэзультаты, атрыманы за дапамою сумарнага наставніка, даюць найбольша інфармацыю. Траектары GPT спадважвалі студэнта на частэйшую адправку рашэнняў. Траектары Qwen былі лёгкія для оцэнкі і належалі да той самай групы, пры тым яны спадважвалі больш павтарэння. Сумарная перапрацоўка з мякімі меткамі не проста взяла найкрашчае з кожнага падходу, і проблемы з павтарэнням застаўаліся. Усё-такі ў яе была найвышэйшая колькасць успехоў, і, у пораўнанні з сумарной перапрацоўкай з жорсткімі токенамі, у яй было меншых памылак пад час выканання SQL-запытоў і менш эпізодаў, якія завершаліся праз ліміт колькасці ходоў.
Метод керавання з урахоўванням ваг меў свае супэльнія. Урахоўванне ваг рэядоў на адповіднасці ўпэўненасці оценяючага ёсць дэшэўшым, чым адпаведныя розпады верыятнасцяў, і на дадзэннях з прабнымі оценкамі GPT ён даў найлепшыя рэзультаты. Аднак ён не можа паведаміць учніку пра суседнія альтэрнатывы на кожной пазіцыі; ён толькі кажа «скопіюй гэты токен жорсткіяй або мякшай меры». Мяккія меткі тыпу Top-k падходзяць у тых случаях, калі оценяючы вырашае за адпаведным джэрэлам і сумешанне дадзэнняў ёсць настацькім, так што учнік не будзе занадта прылегаць да стылю аднаго вучыльніка.
Урокі апаратнай часткі
Патрэбны былі два відэры машын. Для оцэнкі трэба было заставіць Qwen3.5-35B-A3B у 8-бітным фармаце ў памяці і запускаць яго на зафіксаваных цілях, таму мак з велікай колькасцю RAM — 128 ГБ аб’еднанай памяці, якая можа заставіць квантаванага вучыльніка, — быў доцільны. Ён не быў шырокі, але дазволіў выконаць усю падготовку локальна, перш чым вікорыстоўваць платную GPU-вычаквальную час.
Практыка паказала працоўны прыем. Тонкая наладка LoRA апыяўляецца вялікімі матрыцамі, з працэсамі вычысленняя ў напрамку і зворачна, ядрамі адзірвання і крокамі оптымізатора, і GPU отказа NVIDIA была набліжна быстрэй, нават паўтараючы меншае загальнае колькасць памяці, адтуды што тэнзоры застаўаліся ў VRAM і выконваліся за дапамогою ядра CUDA. Паўтараючыся урок — гэта ўместнасць і працэсная здатнасць ўжо ўжо разныя проблемы. Вялікая памяць RAM сістэмы дазволяе размясціць і падготавіць неабходныя даныя, тады як VRAM GPU паўтараючаяся CUDA дазволяе шырока трэнаваць іх. Рабочы працэс стаў такім: выконваць усё, што можна, на Mac, а запускаць удалённую GPU толькі тады, калі даныя і скрыпты будуць гатовыя.
Урокі
Метод дыстыляцыі з мягкімі меткамі заслуговае на прытаму для тонкай наладкі агента, калі толькі яго эфекты будуць ацэнены праз практычныя тэсты. Нявярнае значэнне на рэвэлі маркероў несе больш інформацыі, чым точныя маркеры, але гэта застаецца локальным кераваннем і сама по сабе не навучыць мадэль восстанавляцца пасля некалькаго вызову паганага інструмента, ухілляцца ад цыклів чы адносна лепшая аналізаваць новыя спазырэнні.
Мягкія меткі-праксікі трэба ставіць чыста. Рэкорды GPT, якія тут паказаны, — гэта не сабеіндыкаваныя верыятнасці GPT, а тые, якія ацэнены за дапамою Qwen. Гэта заўсёды ёсць корыстны эксперымент, проста не справжняя дыстыляцыя логітов GPT.
Учыльнік з той самай групы можа перамагаць сільнейшага. Настолькі, наскількі хораша была адпаведнасць ацэнювальнага прыстрою да рэальных дадзенняў, мяла большое значэнне, чым сама яго оцэнка.
Метод «Sparse top-k з хвостам» ўособліва практычны компроміс. Зберагчы логіты всіх слоў дасягнуць большай полноты, але гэта даскладна з точкі зору зберагчэння, пераносу і навчання. Дваццаць токенав плюс достатня частка «хвоста» дапамагае, каб цэльны токен заставаўся відным практычна скрозь.
Спалучэнне розных методаў навчання лепшая, чым выбір аднаго «пераможця». Найлепшыя рэзультаты былі атрыманы шляхом сумавання рэкордаў з оценкамі GPT 5.5 medium з рэкордаў з самаоценкамі Qwen, а таксама шляхом навчання базовага модэлю з мяккімі меткамі.
Якія ёсць наследкі
Чы гэта дапамагае? Так, за певных умов. У найкрашчай конфігурацыі метод дыстыляцыі з мяккімі меткамі дапамогаў агенту на базе 0.8B SQL: рэкорды з оценкамі GPT у спалучэнні з рэкордамі з самаоценкамі Qwen, якія былі паданы базоваму модэлю unsloth/Qwen3.5-0.8B, рашылі 55 з 220 задач, чым значна перадалі студэнта, які вікорыстоўваў жорсткія меткі (46/220), а таксама групу, якая вікорыстоўвала жорсткія меткі (49/220).
Не трэба спрыяць гэтам як да таго, што „мягкія меткі завжды выграюць“. Джэрэлле навучальніка, пачатковая настройка студэнта, супараднасць верыятнасцей і поведэнне пад час адклікання мелі важлівую ролю, і навучальнік, які выйшаў на першае месца, не быў тым, у якога была найлепшая оцэнка. Тыя проблемы, якія яшчэ застаюцься, стосуюцца агентных аспектаў: некарэктны SQL, павтаральныя дзеянні і непаштоўнае вярнэнне ў межах ціклу.
Самэ гэтая прычына робіць тэсты важлівымі для падтрымкі. Студэнт можа выглядаць нормальна пад давяннем навучальніка, але ўсё равно паспяшацца, калі трэба самастойна дзеяць. Будучыя доследжэнні павінны застаўляць усе параметры незмяннымі і пераканацца, чы новая ідэя навчання павышае эфектыўнасць самога ціклу, а не толькі показнікы пазацікловага аналізу.
Спадневаная літэратура
- Адаптаванне малага GPT для індыянскіх народных казак: токенізатор, маска і падышкі: GPT з 9 мільйона параметра, створаны з нуля: чаму токенізатор GPT-2 не справляецца з словамі з народных казак, як працуюць BPE і каузальная маска, і як адна пакетна обработка дае 4,096 падышкіў для наступных токенав.
- Пошук у відэа і аудыя па значэнні: стварэнне мультымадальнага RAG-сістэмы з аддаптацыямі Gemini Embedding 2: як адна простора аддаптацый для тэксту, аудыя, відэа і PDF-файлаў заменіла традыцыйныя методы транскрыпціі, з вікорыстаннем чанкавання, ChromaDB, расшырэння запітоў, пераранжавання і прагаў.