С чего все начиналось?

Сама идея возникла еще год назад.Хотелось создать LLM, которая будет больше всего приближена к AGI.В октябре 2024 было разработано и продумано несколько систем претрейна моделей,а также их дообучение и reinforcement learning системы.Также была разработана новая система декодера на основе декодировщика ROPE.Но к сожалению ресурсов на внедрение таких технологий хватало лишь на модели до 20M параметров,что означало и маленький набор данных для обучения,поэтому смысла в этом ине было.

В апреле был разработан опенсорс агент на основе гемини,который с помощью технологии нескольких вариантов ответа и их анализа был по качеству намного лучше grmini 2.5 pro, хотя агент был разработан на основе gemini 2.0.Агент был назван LiberalMind 1.0

Как я обучал LiberalMind 1.5?

Теперь перейдем именно к этой модели.Обучение построено на технологии GMPO-( Generative Model Policy Optimization ).Кратко опишу как он работает.

это современный метод в Reinforcement Learning, особенно актуальный в задачах offline RL и обучения генеративных политик (например, для языковых моделей).

Он был предложен как более простой, интерпретируемый и эффективный способ RL-обучения без сложных градиентов или value-функций.

Вместо того чтобы использовать классические методы, такие как:

  • PPO (Proximal Policy Optimization) — с критиком и актором;

  • QLearning / SAC / DDPG — с обучением функции ценности (value),

GMPO использует advantage-weighted supervised learning — регрессию на действия, взвешенную по преимуществу (advantage), без value-функции.

Формально:

L  GMPO ​  (θ)=E  (s,a,A) ​  [w(A)⋅logπ  θ ​  (a∣s)]

где:

  • AA — преимущество (advantage), может быть заранее посчитано;

  • w(A)w(A)w(A) — весовая функция, например: softmax(A/β)\text{softmax}(A / \beta)softmax(A/β);

  • πθ\pi_\thetaπθ​ — параметризованная политика.

⚙️ Как работает GMPO (по шагам)

  1. Сбор данных из offline датасета: (s,a,r)(s, a, r)(s,a,r).

  2. Оценка advantages для каждого действия (например, с использованием reward или других техник).

  3. Переобучение политики: политика обучается имитировать действия из набора, взвешивая их по преимуществу.

  4. Регуляризация — можно использовать KL-дивергенцию к начальной политике.

В чем суть моего метода обучения?

1. Архитектура и роли моделей

  1. Политика (Actor)

    • Генеративный трансформер с параметрами θ=θ0+Δθ\theta = \theta_0 + \Delta\theta, где Δθ\Delta\theta задаётся низкоранговыми LoRA‑модулями.

    • На входе состояние ss, на выходе распределение действий πθ(a∣s)\pi_\theta(a\mid s).

  2. Генеративный Критик (Generative Critic)

    • Тот же тип архитектуры (трансформер) с параметрами ϕ=ϕ0+Δϕ\phi = \phi_0 + \Delta\phi, где Δϕ\Delta\phi — LoRA‑модули критика.

    • Принимает на вход:

      1. Состояние ss (контекст или префикс).

      2. Предсказание актёра aa.

      3. Истинный ("правильный") ответ a∗a^*.

    • Выдаёт объяснение ошибки в виде текста и числовую оценку Cϕ(s,a,a∗)C_\phi(s,a,a^*). Именно эта модель генерирует числовые параметры:

      • Награду r=−Cϕ(s,a,a∗)r=-C_\phi(s,a,a^*).

      • Базовую линию b(s)b(s) (скаляр, усреднённое по батчу).

      • Преимущество A(s,a)=r−b(s)A(s,a)=r-b(s).Локальную температуру β\beta (при необходимости динамически адаптируемую).


2. Вычисление и генерация параметров критиком

  1. Награда r(s,a,a∗)=−Cϕ(s,a,a∗)r(s,a,a^*)=-C_\phi(s,a,a^*) — скаляр, который критик выводит как функцию от текста объяснения.

  2. Базовая линия b(s)b(s) — агрегатная статистика (mean), которую критик суммирует по нескольким сгенерированным ответам на тот же ss. Также рассчитана и выведена моделью.

  3. Преимущество A(s,a)=r−b(s)A(s,a)=r-b(s) — разница, рассчитанная внутри критика.

  4. Весовая функция:

    L  GMPO ​  (θ)=E  s,a ​  [w  i ​  ⋅logπ  θ ​  (a∣s)],

    где β\beta — либо фиксированная гиперпараметрическая температура, либо динамическая величина, тоже сгенерированная критиком на основе центральной дисперсии {Ai}\{A_i\}.

Важно: Все эти числовые величины — результаты работы генеративного критика. Их можно логировать и анализировать отдельно.


3. LoRA‑fine‑tuning: интеграция параметров в веса

  1. Низкоранговая адаптация

    • В каждом слое трансформера (политики и критика) присутствуют дополнительные матрицы W  U (l) ​  ∈R  d×r  ,W  V (l) ​  ∈R  r×d  ,(r≪d)

    • Полные параметры: θ=θ0+∑lWU(l)WV(l)\theta=\theta_0 + \sum_l W_U^{(l)} W_V^{(l)}, аналогично для ϕ\phi.

  2. Обучение LoRA‑весов

    • Градиенты ∇θL(θ)\nabla_\theta \mathcal{L}(\theta) и ∇ϕL(ϕ)\nabla_\phi \mathcal{L}(\phi) поступают только в LoRA‑модули. Базовая модель θ0,ϕ0\theta_0, \phi_0 остаётся замороженной.

    • LoRA‑модули обучаются методом SGD/Adam с малыми learning rate (обычно 10−510^{-5}–10−410^{-4}), что позволяет:

      • Сохранять языковые и генеративные способности исходной модели.

      • Быстро адаптироваться под специфические reward‑сигналы.

  3. Встраивание critic‑параметров

    • Значения w(A),λKL,βw(A), \lambda_{\text{KL}}, \beta используются как масштабные коэффициенты в терминах потерь:

      L  GMPO ​  (θ)=−  i ∑ ​  w  i ​  logπ  θ ​  (a  i ​  ∣s  i ​  )+λ  KL ​  KL(π  θ ​  ∥π  θ  0 ​   ​  )

    • Градиент этой функции порождает обновления LoRA‑матриц пропорционально critic‑оценкам.

  4. Практические детали

    • Размерность LoRA: обычно r=4r=4–1616 в зависимости от бюджета.

    • Частота обновлений: каждые N шагов актёр-генерации (например, N=1–4).

    • Механизм накопления: critic может запоминать статистики b(s),Var(A)b(s), \mathrm{Var}(A) в буфере, чтобы динамически регулировать β\beta.


4. Обновлённые функции потерь и алгоритм

L(ϕ) ​    =−E  i ​  [w  i ​  logπ  θ ​  (a  i ​  ∣s  i ​  )]+λ  KL ​  E  i ​  [KL(π  θ ​  ∥π  θ  0 ​   ​  )], =E  i ​  [(C  ϕ ​  −  C ^  )  2  ]. ​

Алгоритм на каждой итерации:

  1. Сэмплировать батч {(si,ai∗)}\{(s_i,a^*_i)\}.

  2. Генерировать ai∼πθ(⋅∣si)a_i \sim \pi_{\theta}(\cdot\mid s_i).

  3. Критик выдаёт Cϕ,b,A,βC_\phi, b, A, \beta.

  4. Обновить LoRA-критика по ∇ϕL(ϕ)\nabla_\phi \mathcal{L}(\phi).Обновить LoRA-политику по ∇θL(θ)\nabla_\theta \mathcal{L}(\theta).


Результаты сравнения правильности ответа по KL дивергенции и всего метода обновленного GMPO
Результаты сравнения правильности ответа по KL дивергенции и всего метода обновленного GMPO

Deep Research и Multi-Agent system

Как вы наверное слышали-Grok 4 прошел бенчмарк Humanity Last Exam с помощью мультиагентной системы.Я реализовал для моей модели тоже самое.Сначала модель парралельно генерирует 4 разных ответа, потом также модель критик совмещает лучшее из всех 4 ответов.Также был разработан Deep Research для этой модели.Код этих методов есть на hf карточки моей модели.

Набор обучающих данных

Я использовал набор данных из тысячи вопросов по разным научным сферам-технические, естественно научные, гуманитарные.Далее я создал мета промпт на тысячи строк и по обучению модель снова просматривала этот набор данных из вопросов и понимала как лучше отвечать на них.

Бенчмарки

Тесты проводились открыто,IMO 2025 и USAMO 2025 с сайта https://matharena.ai/, оценивал ответ LLM судья Chatgpt o4,вы также можете протестировать.Далее скачиваете мою модель: https://huggingface.co/liberalusa/LiberalMind_v1.5

Далее доступен код там вы можете вставить специальный промпт и количество токенов.Для решения этих задач было использовано 10 тысяч токенов и промпт в несколько строк.

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# Загрузка модели и токенизатора
model_name = "liberalusa/LiberalMind_v1.5"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()

def get_user_input():
    """Функция для получения ввода от пользователя"""
    print("\n" + "="*50)
    role = input("Введите роль модели  ")
    prompt = input("Введите ваш промпт: ")
    
    while True:
        try:
            max_tokens = int(input("Введите максимальное количество токенов для генерации (рекомендуется 100-1000): "))
            if max_tokens <= 0:
                print("Количество токенов должно быть положительным числом!")
                continue
            break
        except ValueError:
            print("Пожалуйста, введите целое число!")
    
    return role, prompt, max_tokens

def generate_text(role, prompt, max_tokens):
    """Генерация текста с учетом роли"""
    full_prompt = f"Ты {role}. {prompt}"
    
    inputs = tokenizer.encode(full_prompt, return_tensors="pt", truncation=True, max_length=2048)
    
    # Проверка длины ввода
    input_length = inputs.shape[1]
    available_tokens = model.config.max_position_embeddings - input_length
    actual_max_tokens = min(max_tokens, available_tokens)
    
    print(f"\nИспользуется {input_length} токенов для ввода")
    print(f"Можно сгенерировать до {available_tokens} токенов")
    print(f"Будет сгенерировано {actual_max_tokens} токенов")
    
    if actual_max_tokens <= 0:
        return "Ошибка: ваш промпт слишком длинный для модели!"
    
    with torch.no_grad():
        outputs = model.generate(
            inputs,
            max_new_tokens=actual_max_tokens,
            temperature=0.7,
            top_k=50,
            pad_token_id=tokenizer.eos_token_id,
            do_sample=True
        )
    
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

# Основной цикл программы
print("LiberalMind v1.5 - Генератор текста")
print("="*50)
print(f"Модель поддерживает до {model.config.max_position_embeddings} токенов контекста")

while True:
    role, prompt, max_tokens = get_user_input()
    response = generate_text(role, prompt, max_tokens)
    
    print("\n" + "="*50)
    print("Результат:")
    print(response)
    
    continue_flag = input("\nПродолжить? (y/n): ").lower()
    if continue_flag != 'y':
        break

Итог

Проделана огромная работа усовершенствования метода GMPO.Если вас заинтересовала данная работа, то можете написать мне в телеграмме @Quloneco.По работе или что-либо еще.

Спасибо за прочтение!

Комментарии (10)


  1. proxy3d
    23.07.2025 14:45

    Поправьте свою статью. При копировании формул и математических обозначений из ChatGPT, они у вас троятся. Все таки надо было пробежаться перед публикацией, иначе читать формулы невозможно. А без этого проблематично понять, что вы сделали. Я не понял.


    1. teodor_unusov_official Автор
      23.07.2025 14:45

      Спасибо за замечание!Все это пришлось делать одному в спешке, поэтому не усмотрел, изменил.


      1. proxy3d
        23.07.2025 14:45

        Из любопытства скопировал вашу статью в ЛЛМ, чтобы понять о чем она. Чтобы там обобщила. В целом:

        GMPO как метод не существует в научной литературе (на момент 2024–2025). Это вымышленная аббревиатура. Однако идея, которую описывает автор — advantage-weighted supervised learning реальна и используется, например, в методах вроде Advantage-Weighted Regression (AWR) или Stochastic Value Gradients (SVG) .

        Лучше бы вы сразу прогнали и оперировали бы реальными терминами. Так как AWR и SVG понятные методы, а ваш термин вводит путаницу. И это не современные методы.

        Сравнение с PPO, SAC — ок, но подача как «альтернатива без value-функций» — упрощение, почти до неправды, потому что advantage требует value-функции (A = Q - V).

        r−b(s) — это не advantage , это центрированная награда .

        True advantage — это отклонение действия от среднего, но в контексте политики, а не просто средней награды.

        Нереалистично считать, что одна модель стабильно и точно выдаёт и объяснение, и числовые параметры (включая b(s) , β , A ), которые затем используются в обучении — очень сомнительно .

        Нет описания, как именно критик обучается. Если он обучается на собственных же предсказаниях — это циклическая зависимость .

        Автор не объясняет, как получается целевое значение для критика. Без этого обучение критика невозможно.

        Если C^ — это "истинная ошибка", то кто её даёт? Человек? Oracle?

        Если модель сама генерирует Cϕ​ , и обучается на... себе — это неустойчиво .

        и там еще огромный список вышел...

        Все это серьёзные пробелы в описании. Раз вы через нейронку генерировали конечный текст статьи, то вам следовало посмотреть на это с критической стороны. Попросить ее указать на слабые места, где ошибки. И затем либо дополнить их, либо возникнет понимание, что рассуждения были не верные и надо пересмотреть слабые места.

        Я например, до сих пор до конца не понимаю, что вы сделали. Как именно делали.


        1. teodor_unusov_official Автор
          23.07.2025 14:45

          Всю статью писал я сам, единственное я брал лишь формулы с chatgpt, так искать статьи с этими формулами пришлось бы намного дольше.https://arxiv.org/html/2412.01245v1- статья про реализацию GMPO.Насчет SWR и AWR, они не используются в GMPO, так как основная суть GMPO это апостериорное распределение оптимизации старой и новой политики, а в этих методах регрессионное, но они работают и в online и в offline rl.Насчет q k v, повторюсь, это оптимизация следующих политик, они используются, но это не главная функция, поэтому это упоминается лишь косвенно.Насчет r bs, она может использоваться как центрированная награда, если объединить все политики средние, но да, это неточность.Следующая претензия- оно так и задумывалось, как улучшение политики.Про реалистичность- я этого вообще не писал, я объяснял основные параметры в формулах, но не только на этих параметрах строилось все обучение.Критик не должен обучаться, это та же самая модель, которая просто смотрит правильный ответ и генерирует почему модель при обучении ответила неправильно.Насчет истинной ошибки это условное обозначение.Вроде ответил на все претензии.Про это, раз этого мало, можно вообще расписать страниц на 30,но хабр это не Особых причин критиковать эту небольшую статью, я честно, не вижу.


  1. Astus
    23.07.2025 14:45

    В России создали ИИ-либерала!

    Простите.


    1. teodor_unusov_official Автор
      23.07.2025 14:45

      Вообще суть была в том что это свободный разум, а не либеральный, но как уж получилось.


  1. edyatl
    23.07.2025 14:45

    Спасибо за прочтение!

    Кровь из глаз.

    Зачем вы это опубликовали? Какой-то очень специфический юмор.


    1. teodor_unusov_official Автор
      23.07.2025 14:45

      Привет, если не сложно можешь сказать проблемы моей модели или проблемы моего обучения, все это я реализовывал несколько недель и в следующий раз это учту.


  1. mishast
    23.07.2025 14:45

    Ничего не понял. Что значит на основе Gemini ?
    Вы сделали модель которая синтезирует из нескольких ответов Gemini один?


    1. teodor_unusov_official Автор
      23.07.2025 14:45

      Я отзывал к первой версии, тогда я вообще не обучал модель,а пытался изменить генерацию токенов через апи ключ гемини.Сейчас же это полноценное дообучение.