Влад Соколовский

AI-инженер, автор статей и ментор для разработчиков

Все заметки

Telegram-пост

BERT на стероидах или новая глава в AI Инженерии

  • #ai
  • #dev_help
Мистер JEV в офисе с кружкой кофе

Буквально на днях обсуждали с ментисом является ли нормальной практикой делать классификацию с помощью генеративных моделей, например, классификацию E-mail’ов SPAM/NOT_SPAM или классификацию тикетов в вашей Jira, моё мнение – очень часто это имеет смысл, – особенно когда множество классов у нас не статично и условия будут вынуждать нас перетренировывать BERT’а каждый раз когда добавляется новый критерий или класс.

Если упростить, то BERT у нас натренирован заполнять [MASKED] места в тексте тем, что туда подходит лучше всего основываясь на контексте с обеих сторон:

P(xi | x≠i)

Пример:

Я люблю [MASKED] кофе
P(пить | Я люблю кофе)

GPT работает, что называется авторегрессивно – умное слово означающее, что вероятность генерации токена зависит от всех токенов, сгенерированных ДО него:

P(xt | x1, x2, …, xt−1)
Я люблю пить → ?
P(кофе | Я люблю пить)

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

BERT – это так называемый encoder (переводит input в вектор, эмбеддинг если хотите), поверх его представлений о тексте тренируется простенькая нейронка, которая, основываясь на этих эмбедингах решает как классифицировать входящий в BERT текст по тем параметрам, которые выбираете вы во время тренинга этой нейронки. Отсюда и появляется его способность к классификации – BERT + mini-нейронка.

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

Так почему же мы с вами пользуемся ChatGPT, а не ChatBERT? На это есть несколько причин:

  1. У генеративных моделей нет необходимости в fine-tuning под каждую задачу, in-context learning решает всё за нас.
  2. GPT легче тренировать на тексте из Интернета.
  3. GPT-only архитектура лучше масштабировалась

Если у вас хватило духа всё это прочитать, то поздравляю, вас прогрели на то, чтобы вы изучили что такое JEV. Jev – новый класс моделей от ноунейм-компании Typesafe, основатель которой придумал Instruct GPT – этот концепт я объяснял тут.

Мы не знаем настоящюю архитектуру JEV, но если очень сильно упростить, JEV – это как если бы BERT + mini-нейронка которая научились понимать описание классов из промпта, и их больше не надо перетренировывать каждый раз когда что-то меняется.

Он даже confidence_score настоящий возвращает и теперь не нужно спрашивать у GPT “верни число от 1 до 10 на сколько ты уверен в своём ответе”, если вдруг кто-то всё ещё этим занимался 😅

JEV не галлюционирует, это невозможно из-за того, что устроен он как BERT, – мы засовываем в него JSON схему, а он лишь заполняет пустые [MASKED] места параллельно, ему не надо переписывать всю вашу схему с нуля, чтобы вернуть ответ, поэтому и скорость у него на два порядка быстрее.

Давайте сравним прайсинг Jev с моделями которые раньше использовали для подобных задач:

МодельInput / 1M tokensOutput / 1M tokens
Jev$0.042$0
GPT-5.4 nano$0.20$1.25
GPT-5.6 Luna$0.20$1.20
Claude Haiku 4.5$1.00$5.00
Gemini 3.8 Flash$0.75$3.75

Как вы можете заметить, тут не о чем и говорить, НО это не значит, что JEV теперь будет королём. Просто раньше мы использовали генеративки там где, очевидно, лучше подошли бы модели по типу JEV и теперь мы естественным образом произведём миграцию на Jev как только он будет stable-release и мы убедимся, что его “когнитивные способности” в плане классификации ничем не уступают генеративкам.

Это действительно большой шаг в правильную сторону, ожидаю увидеть модели гибридного типа Jev-like классификатор + GPT-like reasoner. JEV не предназначен для длинного последовательного reasoning’а. TypeSafe прямо рекомендует декомпозировать сложные решения на набор атомарных вопросов и собирать дальнейшую логику кодом.

Также, если вы будете использовать его, скажем, для принятия решения о том, какой вызвать tool, то он вам даже не подскажет какие аргументы туда нужно передать, это уже придётся спрашивать у генеративки.

Я доступ к Jev уже получил, вы можете подать заявку тут. Вот первый пример который я попробвал:

r = TypeSafeClient().system_one(
    state={
        "state": "Я не хочу верить результатам электорального процесса, я устал, босс, мне очень больно!"
    },
    questions={
        "urgency": Noul(
            instructions="Насколько срочно человеку нужна помощь?"
        ),
        "mood": Choice(
            instructions="В каком настроении пребывает человек?",
            criteria={
                "sadness": "чувство утраты, скорби или разочарования",
                "desperate": "чувство безнадёжности",
                "neutral": "нейтрально, ни рыба ни мясо",
            },
        ),
    },
)

print(r.nouls["urgency"].noul)
print(r.choices["mood"].choice)
Ответ JEV: классификация срочности и настроения с оценками уверенности
Response

Короче, хайп оправданный, наконец-то какая-то движуха началась, а то я уже не знал чем я буду заниматься… Больше всего ждём открытых моделей подобного класса от китайцев, уж очень интересно узнать, что там внутри и есть ли там вообще BERT или это совсем что-то новое…

Про JEV сейчас трубит весь англоязычный интернет, и не зря, если вы погружены в AI тематику и это первый пост на русском языке про JEV который вы читаете, то перешлите это в ваши AI чатики и цените, у всех пост про JEV выйдет позЖЕ, а в моей Багодельне уЖЕ.

Рассылка

Письма из Багодельни

Письма с новыми статьями, инструментами и мыслями о том, куда катится AI-разработка. Только то, что проверил на себе.

Письма из Багодельни

Письма с новыми статьями, инструментами и мыслями о том, куда катится AI-разработка. Только то, что проверил на себе.

Отписаться можно в любой момент