<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
    <title>Notes &amp; Insights - mlops</title>
    <subtitle>Блог об архитектуре систем, AI-агентах, распределенных системах и алгоритмическом трейдинге.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://xsa-dev.github.io/tags/mlops/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://xsa-dev.github.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-07T00:00:00+00:00</updated>
    <id>https://xsa-dev.github.io/tags/mlops/atom.xml</id>
    <entry xml:lang="ru">
        <title>Самообучающиеся торговые AI-агенты: иллюзии, оверфиттинг и реальная архитектура</title>
        <published>2026-10-07T00:00:00+00:00</published>
        <updated>2026-10-07T00:00:00+00:00</updated>
        
        <author>
          <name>Alexei Savin</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://xsa-dev.github.io/posts/self-improving-trading-agents/"/>
        <id>https://xsa-dev.github.io/posts/self-improving-trading-agents/</id>
        
        <content type="html" xml:base="https://xsa-dev.github.io/posts/self-improving-trading-agents/">&lt;p&gt;Концепция автономного торгового агента, который «сам торгует, анализирует свои ошибки и дообучает стратегию 24/7», сейчас на пике хайпа. В сети появляется множество видео и промптов, обещающих превратить Claude Code или LLM-агентов в машины по генерации сверхприбыли.&lt;/p&gt;
&lt;p&gt;Однако между красивыми демо-роликами и реальным рыночным продакшном лежит огромная пропасть. Разберем, где здесь маркетинг, где критические риски оверфиттинга, и как должна выглядеть архитектура надежного агентного контура.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;anatomiia-khaipa-47-v-mesiats-i-nauchnyi-metod&quot;&gt;Анатомия хайпа: 47% в месяц и «научный метод»&lt;/h2&gt;
&lt;p&gt;Типичный сценарий, который продвигают в платном доступе:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;One-shot prompt для Claude Code разворачивает стек на Railway / облаке.&lt;/li&gt;
&lt;li&gt;Агент подключается к API биржи и ведет позиции.&lt;/li&gt;
&lt;li&gt;Еженедельно агент анализирует ledger (историю сделок) и меняет веса стратегии.&lt;/li&gt;
&lt;li&gt;Заявляются цели уровня 40–50% в месяц при минимальных просадках.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;v-chem-fundamental-nye-problemy-takogo-podkhoda&quot;&gt;В чем фундаментальные проблемы такого подхода?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Статистическая незначимость:&lt;/strong&gt; демонстрация «24 прибыльных / 22 убыточных сделки за 8 недель» — это околонулевая выборка. В алготрейдинге статистический edge проявляется на выборках от 500–1000+ сделок на разных рыночных режимах.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Иллюзия «одной переменной»:&lt;/strong&gt; в классическом научном методе гипотезы тестируют, меняя один параметр. В реальной мульти-активной стратегии десятки гиперпараметров (stop-loss, take-profit, regime threshold, ATR multiplier) жестко скоррелированы. LLM, пытаясь подогнать один параметр под прошлую неделю, гарантированно переобучается на локальный шум (in-sample overfitting).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Слепое доверие переключению в Live:&lt;/strong&gt; делегировать агенту право самостоятельно переключать флаг &lt;code&gt;live: true&lt;/code&gt; без внешнего бэктеста и человека — прямой путь к ликвидации депозита.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;arkhitektura-nadezhnogo-kontura&quot;&gt;Архитектура надежного контура&lt;/h2&gt;
&lt;p&gt;Если отбросить маркетинговую шелуху, сама идея разделения обязанностей между специализированными агентами вполне жизнеспособна. Но архитектура должна строиться по принципу &lt;strong&gt;изолированных контуров и жестких шлюзов (Approval Gates)&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot; &gt;&lt;code data-lang=&quot;mermaid&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;flowchart&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; TD&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    subgraph&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; Orch &lt;/span&gt;&lt;span&gt;[&amp;quot;🎛️ 1. Orchestrator &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Hermes Agent&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;)&lt;/span&gt;&lt;span&gt;&amp;quot;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction TB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        O1&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Управление инфраструктурой (deploy, cron, health)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        O2&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Сбор телеметрии и Append-Only Ledger&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        O1 &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;---&lt;/span&gt;&lt;span&gt; O2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    end&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    subgraph&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; Exec &lt;/span&gt;&lt;span&gt;[&amp;quot;⚡ 2. Strategy Engine &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Исполнение&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;)&lt;/span&gt;&lt;span&gt;&amp;quot;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction TB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        E1&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Детерминированный движок (Rust / Python / Freqtrade)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        E2&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Строгий Risk Management (Max Drawdown, Sizing)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        E1 &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;---&lt;/span&gt;&lt;span&gt; E2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    end&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    subgraph&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; Tuner &lt;/span&gt;&lt;span&gt;[&amp;quot;📊 3. Out-of-Sample Tuner &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Аналитик&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;)&lt;/span&gt;&lt;span&gt;&amp;quot;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction TB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        T1&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Бэктесты на независимой OOS-выборке со сдвигом&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        T2&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Отчет с гипотезами и метриками (Sharpe, Profit Factor)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        T1 &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;---&lt;/span&gt;&lt;span&gt; T2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    end&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    subgraph&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; Gate &lt;/span&gt;&lt;span&gt;[&amp;quot;🛡️ 4. Human Approval Gate&amp;quot;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction TB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        G1&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Ручной аудит гипотезы разработчиком&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        G2&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;Применение флага live: true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        G1 &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;==&amp;gt;&lt;/span&gt;&lt;span&gt; G2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    end&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Orch &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt; Exec&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Orch &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt; Tuner&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Tuner &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;==&amp;gt;|&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Предложение оптимизации&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;|&lt;/span&gt;&lt;span&gt; Gate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Gate &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;==&amp;gt;|&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Апрув параметров&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;|&lt;/span&gt;&lt;span&gt; Exec&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;4-kliuchevykh-printsipa-dlia-prodakshna&quot;&gt;4 ключевых принципа для продакшна&lt;/h2&gt;
&lt;h3 id=&quot;1-determinirovannoe-ispolnenie-otdel-no-ot-llm&quot;&gt;1. Детерминированное исполнение отдельно от LLM&lt;/h3&gt;
&lt;p&gt;LLM не должна принимать решения по каждой свече на миллисекундах. Роль AI-агента — &lt;strong&gt;мета-оптимизация и аналитика&lt;/strong&gt;: генерация идей, фильтрация аномалий, валидация гипотез. Исполнение ордеров и контроль рисков должны выполняться жестким детерминированным кодом.&lt;/p&gt;
&lt;h3 id=&quot;2-append-only-ledger-kak-edinstvennyi-istochnik-pravdy&quot;&gt;2. Append-Only Ledger как единственный источник правды&lt;/h3&gt;
&lt;p&gt;Все события, котировки, сигналы и фактические исполнения логируются в неизменяемый JSONL-лог. Агент не может переписать историю — только прочитать ее.&lt;/p&gt;
&lt;h3 id=&quot;3-out-of-sample-validatsiia-so-sdvigom-po-vremeni&quot;&gt;3. Out-of-Sample валидация со сдвигом по времени&lt;/h3&gt;
&lt;p&gt;Тюнер стратегий никогда не должен оптимизировать параметры на тех же данных, где искались сигналы. Использование временного сдвига (например, 3–7 дневный лаг) защищает от оптимизации под случайные всплески волатильности.&lt;/p&gt;
&lt;h3 id=&quot;4-human-in-the-loop-ruchnoi-shliuz&quot;&gt;4. Human-in-the-loop (Ручной шлюз)&lt;/h3&gt;
&lt;p&gt;Любые изменения в &lt;code&gt;strategy.yaml&lt;/code&gt; или параметрах риск-менеджмента требуют явного подтверждения человеком. Переход &lt;code&gt;paper → live&lt;/code&gt; выполняется только после прохождения OOS-гейта.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;pervoistochniki-i-materialy&quot;&gt;Первоисточники и материалы&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Оригинальное видео:&lt;/strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https://youtu.be/6njREUQAFdg&quot;&gt;01 Systems (Wacko Alpha) — Self-Improving Trading Agent on YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Заметки и детальный конспект:&lt;/strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https://github.com/xsa-dev/obsidian-vault/blob/main/YouTube/Self-improving-trading-agent-Hermes-2026-06-21.md&quot;&gt;Obsidian Vault: Self-Improving Trading Agent (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Инженерные наработки и репозитории:&lt;/strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https://github.com/xsa-dev&quot;&gt;github.com/xsa-dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="ru">
        <title>Как обучать и оценивать AI-агентов: почему Pass@1 бесполезен и как работает связка SFT + GKD + GRPO</title>
        <published>2026-10-07T00:00:00+00:00</published>
        <updated>2026-10-07T00:00:00+00:00</updated>
        
        <author>
          <name>Alexei Savin</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://xsa-dev.github.io/posts/training-evaluating-ai-agents/"/>
        <id>https://xsa-dev.github.io/posts/training-evaluating-ai-agents/</id>
        
        <content type="html" xml:base="https://xsa-dev.github.io/posts/training-evaluating-ai-agents/">&lt;p&gt;Большинство метрик, по которым сегодня сравнивают языковые модели (вроде Pass@1 на HumanEval или статичных QA-тестах), практически бесполезны, когда дело доходит до &lt;strong&gt;автономных агентов&lt;/strong&gt; в продакшне.&lt;/p&gt;
&lt;p&gt;В отличие от классического чат-бота (&lt;code&gt;prompt → response&lt;/code&gt;), агент — это динамическая система: &lt;strong&gt;модель + обвязка (harness) + инструменты + память + мутабельное окружение + логика восстановления после ошибок&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Разберем, из чего складывается реальная надежность агентов и как устроен современный трехуровневый пайплайн их обучения: &lt;strong&gt;SFT → On-Policy Distillation (GKD) → RLVR (GRPO)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;4-izmereniia-nadezhnosti-agenta-vmesto-pass-1&quot;&gt;4 измерения надежности агента (вместо Pass@1)&lt;/h2&gt;
&lt;p&gt;Когда агент выполняет транзакционные действия (запись в БД, пуш в репозиторий, исполнение ордеров), статичный процент правильных ответов ничего не говорит о безопасности. В продакшне критичны 4 других фактора:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot; &gt;&lt;code data-lang=&quot;mermaid&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;flowchart&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; TD&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Core&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;🛡️ 4 измерения надежности агента&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    C1&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;🎯 1. Consistency&amp;lt;br/&amp;gt;(Повторяемость результата)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    C2&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;⚡ 2. Robustness&amp;lt;br/&amp;gt;(Устойчивость к шуму API)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    C3&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;🔄 3. Recoverability&amp;lt;br/&amp;gt;(Откат после 5xx и tool errors)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    C4&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;⛔ 4. Failure Severity&amp;lt;br/&amp;gt;(Штраф за деструктивные действия)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Core &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt; C1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Core &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt; C2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Core &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt; C3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Core &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt; C4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Consistency (Повторяемость):&lt;/strong&gt; одна и та же задача при повторных прогонах должна давать стабильный результат с контролируемой дисперсией по токенам и времени.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Robustness (Устойчивость к шуму):&lt;/strong&gt; мелкие изменения в формулировке, смена формата вывода CLI или незначительный шум в API не должны ломать логику рассуждений.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recoverability (Восстановление):&lt;/strong&gt; способность агента понять, что инструмент вернул ошибку (&lt;code&gt;404&lt;/code&gt;, &lt;code&gt;SyntaxError&lt;/code&gt;, пустой вывод), скорректировать гипотезу и продолжить, а не падать в бесконечный цикл.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure Severity (Тяжесть сбоя):&lt;/strong&gt; синтаксическая ошибка tool call должна штрафоваться минимально, а необратимое действие (удаление таблицы или рассинхрон стейта) — приводить к жесткому блокирующему штрафу.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;trekhurovnevyi-paiplain-obucheniia&quot;&gt;Трехуровневый пайплайн обучения&lt;/h2&gt;
&lt;p&gt;Обучать агентов только с помощью SFT или только через RL неэффективно. Оптимальный стек пост-тренинга строится в три этапа:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot; &gt;&lt;code data-lang=&quot;mermaid&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;flowchart&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; TD&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    S1&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;1. SFT (Supervised Fine-Tuning)&amp;lt;br/&amp;gt;Приучает к синтаксису tool_call и Loss Masking&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    S2&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;2. Distillation (On-Policy GKD)&amp;lt;br/&amp;gt;Перенос навыков учителя + выход из тупиков&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    S3&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;&amp;quot;3. RLVR (GRPO / Verifiable Rewards)&amp;lt;br/&amp;gt;Максимизация надежности через проверяемые награды&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    S1 &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;==&amp;gt;|&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Формат освоен&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;|&lt;/span&gt;&lt;span&gt; S2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    S2 &lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;==&amp;gt;|&lt;/span&gt;&lt;span style=&quot;color: #AAD94C;&quot;&gt;Траектории исследованы&lt;/span&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;|&lt;/span&gt;&lt;span&gt; S3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;etap-1-sft-supervised-fine-tuning&quot;&gt;Этап 1. SFT (Supervised Fine-Tuning)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Цель:&lt;/strong&gt; научить модель синтаксису вызова инструментов (&lt;code&gt;tool_calls&lt;/code&gt;), структуре системных инструкций и multi-turn диалогу.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Критический нюанс — Loss Masking:&lt;/strong&gt; градиентный спуск должен рассчитываться &lt;strong&gt;только&lt;/strong&gt; на токенах генерации агента (thought + action). Обучать модель предсказывать вывод терминала, ответ пользователя или результат исполнения инструмента — грубая ошибка. Токены окружения маскируются значением &lt;code&gt;-100&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Потолок SFT:&lt;/strong&gt; модель становится идеальным имитатором обучающего датасета, но не умеет исследовать новые пути или исправлять свои ошибки.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;etap-2-on-policy-distillation-gkd-generalized-knowledge-distillation&quot;&gt;Этап 2. On-Policy Distillation (GKD / Generalized Knowledge Distillation)&lt;/h3&gt;
&lt;p&gt;Классическая дистилляция (Off-Policy) подает студенту идеальные траектории учителя-гиганта. В реальности маленькая модель неизбежно ошибается, попадает в незнакомое состояние и «галлюцинирует» (exposure bias).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Решение — On-Policy GKD:&lt;/strong&gt; студент &lt;strong&gt;сам генерирует траекторию&lt;/strong&gt;, а модель-учитель оценивает логиты именно в тех промежуточных состояниях, куда студент реально зашел.&lt;/li&gt;
&lt;li&gt;Использование &lt;strong&gt;Reverse KL&lt;/strong&gt; заставляет студента фокусироваться на главных модах распределения учителя и учит выходить из тупиков.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;etap-3-rlvr-i-grpo-reinforcement-learning-with-verifiable-rewards&quot;&gt;Этап 3. RLVR и GRPO (Reinforcement Learning with Verifiable Rewards)&lt;/h3&gt;
&lt;p&gt;Когда формат закреплен, в дело вступает обучение с подкреплением по проверяемому результату. &lt;strong&gt;GRPO (Group Relative Policy Optimization)&lt;/strong&gt; убирает необходимость в отдельной тяжелой модели-критике (Critic Network):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;На один входной промпт генерируется группа из $G$ вариантов ($G = 8..16$).&lt;/li&gt;
&lt;li&gt;Каждый вариант прогоняется через детерминированный верификатор (тесты, компилятор, линтер).&lt;/li&gt;
&lt;li&gt;Награда нормализуется внутри группы: $A_i = \frac{r_i - \text{mean}(R)}{\text{std}(R)}$.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #BFBDB6; background-color: #0D1017;&quot; &gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;# Концептуальная схема многокомпонентной награды&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; calculate_agent_reward&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;trajectory&lt;/span&gt;&lt;span style=&quot;color: #BFBDB6B3;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt; test_result&lt;/span&gt;&lt;span&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF8F40;&quot;&gt;    return&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt;        0.2&lt;/span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; format_reward&lt;/span&gt;&lt;span&gt;(trajectory)&lt;/span&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt;       # Валидный JSON / tool schema&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;        +&lt;/span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt; 0.6&lt;/span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; execution_reward&lt;/span&gt;&lt;span&gt;(test_result)&lt;/span&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt; # Unit-тесты пройдены&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F29668;&quot;&gt;        +&lt;/span&gt;&lt;span style=&quot;color: #D2A6FF;&quot;&gt; 0.2&lt;/span&gt;&lt;span style=&quot;color: #F29668;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color: #FFB454;&quot;&gt; efficiency_reward&lt;/span&gt;&lt;span&gt;(trajectory)&lt;/span&gt;&lt;span style=&quot;color: #5A6673;font-style: italic;&quot;&gt; # Минимальное число шагов&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    )&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Правило дисперсии:&lt;/strong&gt; GRPO работает только при наличии вариативности наград. Если все 8 вариантов провалились или все 8 выполнились успешно — обучающий сигнал равен нулю. Задача тренера — подбирать задачи на «границе возможностей» модели.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;glavnyi-anti-pattern-reward-hacking&quot;&gt;Главный анти-паттерн: Reward Hacking&lt;/h2&gt;
&lt;p&gt;Если верификатор наград слаб (например, оценивает только наличие ключевого слова в выводе), RL-агент моментально найдет шорткат: научится вызывать заглушку &lt;code&gt;exit(0)&lt;/code&gt; или обходить тесты.&lt;/p&gt;
&lt;p&gt;Грейдер должен быть &lt;strong&gt;физически изолирован&lt;/strong&gt; от среды агента (отдельный контейнер / процесс), а валидация обязана проверять фактический граф мутаций файловой системы и БД.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;kliuchevye-vyvody&quot;&gt;Ключевые выводы&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Агент = Модель + Среда:&lt;/strong&gt; оценивайте не LLM в изоляции, а всю замкнутую систему действий.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SFT дает форму, GKD учит исправлять ошибки, RL находит оптимум.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Трейсы продакшна — топливо для тестов:&lt;/strong&gt; каждая непредвиденная ошибка агента в бою должна автоматически превращаться в изолированный тест для пост-тренинга.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;pervoistochniki-i-materialy&quot;&gt;Первоисточники и материалы&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Оригинальная серия воркшопов:&lt;/strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https://youtube.com/playlist?list=PLo2EIpI_JMQvQZm-kVlz4wY1vWF0LBcf5&quot;&gt;Hugging Face — Training and Evaluating AI Agents (YouTube Playlist)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Детальный структурированный конспект:&lt;/strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https://github.com/xsa-dev/obsidian-vault/blob/main/YouTube/Training-and-Evaluating-AI-Agents-Workshop-Series-2026-09-16.md&quot;&gt;Obsidian Vault: Training &amp;amp; Evaluating AI Agents (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Репозитории и код:&lt;/strong&gt; &lt;a rel=&quot;external&quot; href=&quot;https://github.com/xsa-dev&quot;&gt;github.com/xsa-dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
</feed>
