Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Kak baseten i genspark obuchili model dlya glubokih issledovaniy prevzoshedshuyu
Dev48
info@dev48.org+375 29 320-40-96WhatsApp@isky_by

© 2026 · Все права защищены.

Как Baseten и Genspark обучили модель для глубоких исследований, превзошедшую Opus 5.5

Источник: Baseten•14 ноября 2026 г. в 00:10

Как Baseten и Genspark обучили модель для глубоких исследований, превзошедшую Opus 5.5

Компания Genspark совместно с Baseten Applied Research провела дообучение Qwen3.5-397B, создав специализированную модель для глубоких исследований, которая превосходит закрытые передовые решения.

Компания Genspark совместно с Baseten Applied Research провела дообучение Qwen3.5-397B, создав специализированную модель для глубоких исследований, которая превосходит закрытые передовые решения.

Авторы

Компания Genspark совместно с Baseten Applied Research провела дообучение Qwen3.5-397B, создав специализированную модель для глубоких исследований (Deep Research). Согласно оценке качества Genspark, модель набрала 0,759 балла по сравнению с 0,612 у базовой модели, что выше показателей Opus 5.5 (0,738), Sonnet 5.5 (0,742), GPT-5.6 Sol (0,637), а также Kimi K3 (0,724) и DeepSeek V4 Pro (0,675).

Дообученная модель проводит исследования более широко и глубоко, обрабатывая в 5 раз больше источников на каждый запрос пользователя по сравнению с базовой моделью, а также пишет более длинные и лучше подкрепленные ссылками отчеты. Работая с весами NVFP4 всего на 2×B200 GPU на реплику, модель теперь обеспечивает работу агента Deep Research в Genspark в промышленной эксплуатации.

«Deep Research — одна из самых требовательных рабочих нагрузок, которые мы запускаем: длинные контексты, десятки вызовов инструментов на каждый вопрос и пользователи, ожидающие качественного отчета. В сотрудничестве с Baseten мы дообучили открытую модель 397B на наших собственных исследовательских задачах и теперь используем её по умолчанию для Deep Research, поскольку она превосходит закрытые модели. Мы сохраняем веса, результаты оценок и код обучения, поэтому модель продолжает совершенствоваться на наших условиях».

«Deep Research — одна из самых требовательных рабочих нагрузок, которые мы запускаем: длинные контексты, десятки вызовов инструментов на каждый вопрос и пользователи, ожидающие качественного отчета. В сотрудничестве с Baseten мы дообучили открытую модель 397B на наших собственных исследовательских задачах и теперь используем её по умолчанию для Deep Research, поскольку она превосходит закрытые модели. Мы сохраняем веса, результаты оценок и код обучения, поэтому модель продолжает совершенствоваться на наших условиях».

Genspark — одно из самых быстрорастущих рабочих пространств на базе ИИ, а Deep Research — один из его флагманских агентов. Задайте ему сложный вопрос, и он разработает стратегию исследования, выполнит десятки поисковых запросов, прочитает нужные страницы и за считанные минуты вернет длинный отчет со ссылками.

Закрытые модели с закрытыми весами хорошо справляются с Deep Research, но они дороги при объемах Genspark, и вы можете менять только промпт, а не веса. Genspark опережал большинство команд в этом вопросе: когда мы начали работать с ними, Deep Research уже функционировал на открытой модели, которую они дообучили. Поэтому вопрос заключался не в том, стоит ли отказываться от закрытых моделей, а в том, насколько далеко можно продвинуть открытую модель с помощью дообучения. Им требовались более глубокие исследования и более качественные отчеты, обученные в соответствии с их собственными стандартами качества, на базе модели, достаточно эффективной для масштабируемого использования.

Модель взаимодействия

Хорошая инфраструктура обучения — основа для дообучения. Baseten предоставляет её через Baseten Loops SDK — платформу для команд, которые хотят самостоятельно проводить контролируемое дообучение (SFT) и обучение с подкреплением (RL) с полным контролем над процессом. Для команд, которым нужна практическая поддержка, Baseten также предлагает Baseten Applied Research — команду, которая работает вместе с ними для достижения целей по стоимости и производительности. Deep Research требовал именно такого партнерства.

В рамках этого взаимодействия команда Baseten Applied Research работала бок о бок с командой Genspark. Обучение проводилось с использованием собственной системы агентов и инструментов Genspark, поэтому модель обучалась в той же среде, в которой она в конечном итоге будет работать. Далее работа заключалась в анализе траекторий, проведении диагностических экспериментов, разработке механизмов вознаграждения и отладке процессов обучения. Мы начинаем с исследовательских вопросов высокого уровня, таких как: Какие модели поведения сдерживают модель? Какой метод обучения подходит для каждого из них? Правильно ли вознаграждение обучает модель? В остальной части этого блога рассказывается, как это выглядит на практике, от первой проверки оценщиком до промышленного развертывания.

Начните с оценок

Чтобы определить цель обучения, мы начинаем каждое прикладное исследование с оценки. Некоторые клиенты приходят с продуктом и интуитивным пониманием того, что означает «лучше», и мы создаем оценку вместе с ними с нуля. У других уже есть оценки, которым они доверяют.

Genspark относился ко второй группе. Они уже создали полноценную инфраструктуру оценки, включая репрезентативные исследовательские запросы и LLM-оценщик, который работал через их собственный эндпоинт и оценивал отчеты по их стандартам качества. Прежде чем проводить обучение на основе этой системы, мы провели стресс-тестирование оценщика на предмет «слепых зон» и манипуляций с вознаграждением, а инженеры Genspark доработали его на основе наших находок. Вместе мы согласовали базовые показатели, отложенный тестовый набор и то, что модель должна продемонстрировать перед запуском в эксплуатацию.

Анализируйте задачу перед обучением

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

Траекторию Deep Research можно разделить на две фазы.

  • На фазе исследования агент выполняет поиск, читает страницы и решает, когда он увидел достаточно.

На фазе исследования агент выполняет поиск, читает страницы и решает, когда он увидел достаточно.

  • На этапе синтеза он превращает более 50 тысяч токенов необработанных данных в полный отчет со ссылками.

На этапе синтеза он превращает более 50 тысяч токенов необработанных данных в полный отчет со ссылками.

Когда отчет оценивается как слабый, одной оценки недостаточно, чтобы понять, какая фаза стала проблемой. Поэтому мы измерили две фазы отдельно. Чтобы изолировать качество синтеза, мы зафиксировали исследование. Для каждой траектории базовой модели мы сравнили отчет модели с отчетом, написанным более сильной моделью-автором на основе тех же собранных данных. На небольшой диагностической панели оценка выросла с 0,58 до 0,73. Таким образом, хотя и этап исследования, и этап написания отчета имели возможности для улучшения, замена только процесса написания позволила сократить большую часть разрыва до уровня передовых моделей. Исследование базовой модели было приемлемой отправной точкой; её синтез был основным узким местом для получения более высокой оценки.

С точки зрения обучения, задача Deep Research — это две работы, а не одна. Исследование и синтез терпят неудачу по-разному и обучаются на разных типах сигналов, поэтому мы обучали их разными методами.

RL — это не единственный ответ

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

Тем не менее, хорошая письменная речь поддается оценке и ранжированию немного сложнее. Структуру, расстановку акцентов, а также то, как аргументы взвешиваются и цитируются, сложнее отразить в виде единой оценки, поэтому одно лишь обучение с подкреплением (RL) — более медленный и зашумленный способ привить этот навык. Вместо этого качественные примеры отчетов напрямую показывают модели, как выглядит хороший текст. Наша первая попытка обучить этап написания текстов с помощью RL застопорилась, поскольку почти каждый отчет получил примерно одинаковую оценку, из-за чего практически не было сигналов для обучения. Предварительное обучение с учителем (SFT) задало целевые стилистические особенности письма, лаконичность и структурированность прозы, позволив модели преодолеть это первоначальное ограничение. Последующее RL сгладило эффекты от SFT, объединив эти поведенческие особенности с уже имеющимися у модели навыками исследовательской работы.

Поэтому мы разделили методы по тому же принципу, что и саму задачу:

  • Исследование → обучение с подкреплением. Агент исследует среду, а вознаграждение подсказывает ему, какие исследовательские стратегии ведут к созданию лучших отчетов.

Исследование → обучение с подкреплением. Агент исследует среду, а вознаграждение подсказывает ему, какие исследовательские стратегии ведут к созданию лучших отчетов.

  • Написание текста → в основном контролируемое дообучение (supervised fine-tuning). Мы сопоставили каждую собственную траекторию исследования модели с высококачественным отчетом, написанным строго на основе этих данных. Каждый токен целевого текста демонстрирует, как использовать имеющийся в контексте материал, и поскольку доказательная база получена самой моделью, она учится писать на основе материалов, которые фактически собрала.

Написание текста → в основном контролируемое дообучение (supervised fine-tuning). Мы сопоставили каждую собственную траекторию исследования модели с высококачественным отчетом, написанным строго на основе этих данных. Каждый токен целевого текста демонстрирует, как использовать имеющийся в контексте материал, и поскольку доказательная база получена самой моделью, она учится писать на основе материалов, которые фактически собрала.

Постоянное взаимодействие для соответствия требованиям Genspark

Оценщик фиксирует лишь то, что команда способна заранее зафиксировать на бумаге, и редко охватывает всё, что для них важно. Чтобы учесть остальное, каждый раунд обучения завершался тем, что команда Genspark оценивала наши обученные модели-кандидаты. Они проводили прямые сравнения с их рабочим агентом и передовой моделью, а также оценивали отчеты по таким критериям, как полнота охвата, глубина проработки, цитирование и достоверность. Они также попарно сравнивали результаты на реальных производственных запросах, используя критерии оценщика для оценки каждого отчета. Специалисты Genspark вручную проверяли выборку результатов.

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

Чтобы убедиться, что эти улучшения сохраняются и за пределами обучающего сигнала, Genspark оценивал модели-кандидаты с помощью отдельного оценщика и выборочных ручных проверок. Это помогло отделить реальные улучшения качества отчетов от переобучения (overfitting) на том оценщике, на котором мы проводили обучение. Решение о переводе модели в продакшн принималось на основе собственной системы оценки Genspark в сочетании с независимой моделью-судьей на реальных производственных задачах.

Формирование правильного вознаграждения

Хорошая оценка не всегда означает хорошую функцию вознаграждения. Оценка должна лишь правильно ранжировать готовые ответы. Вознаграждение же должно давать четкий направленный сигнал на каждом этапе обучения: оно должно указывать модели, в каком направлении двигаться, чтобы перейти от более слабой базовой модели к более сильной и специализированной. Оценщик Genspark мог определять лучшие отчеты, но он давал модели мало прямых стимулов проводить более широкие исследования. Дополнительные поисковые запросы улучшали оценку только в том случае, если они вели к созданию лучшего итогового отчета. Следовательно, обучение исключительно на основе этой оценки увеличивало широту исследований очень медленно.

Изменение функции вознаграждения (reward shaping) — это то, как мы ликвидировали этот разрыв. Оно добавляет компоненты, которые дают прямой сигнал для желаемого поведения, соразмерный текущим возможностям модели. Что касается широты исследований, самой сложной задачей было определить, какой объем исследований достаточен. Для поиска фактов может потребоваться два запроса, а для анализа рынка — тридцать запросов и дюжина источников. Использование одной и той же цели для каждого вопроса предъявляло бы чрезмерные требования к простым вопросам и недостаточные — к сложным.

Поэтому мы задавали целевые показатели для каждого вопроса на основе данных. Мы запустили набор моделей для каждого учебного вопроса и проанализировали распределение их поисковой активности: примерно для тысячи вопросов медиана составила около 17 уникальных запросов и 5 уникальных сайтов, с длинным хвостом, уходящим за 30 и 10, причем примерно для каждого десятого вопроса эталонные модели вообще не использовали поиск. Целевые показатели для каждого вопроса Qi{Q_i} и Di{D_i} представляют собой максимальное количество уникальных запросов и сайтов, использованных по нему любой эталонной моделью. Оценка исследования начисляет баллы за уникальные запросы qq и сайты dd агента по отношению к этим целевым показателям с ограничением после достижения цели:

S=wq⋅min⁡(qQi,1)+wd⋅min⁡(dDi,1),wq=0.4, wd=0.6S = w_q \cdot \min\left(\frac{q}{Q_i}, 1\right) + w_d \cdot \min\left(/frac{d}{D_i}, 1\right), \quad w_q = 0.4,\; w_d = 0.6

Вес сайтов выше, потому что чтение источников — это то, что добавляет доказательную базу в отчет, а избыточные запросы обходятся дешево. Если ни одна эталонная модель не выполняла поиск по вопросу, этот компонент получает максимальный балл, поэтому агент не подталкивается к поиску там, где он не оправдан. Итоговое вознаграждение объединяет S с оценкой качества G от LLM-оценщика в соотношении 2:1 и остается в диапазоне [0, 1]:

R=G+λS1+λ,λ=0.5{R = \frac{G + \lambda S}{1 + \lambda}}, \quad{\lambda = 0.5}

Может ли модель смухлевать, выполняя поиск случайных, не связанных с темой вещей? Не слишком сильно, поскольку компонент LLM-оценщика держит это под контролем. LLM-судья изучает всю историю исследований вместе с отчетом и оценивает, были ли поисковые запросы релевантными и действительно ли использовались источники, поэтому добавление лишнего мусора в историю снижает G, даже если оно повышает S. В любом случае мы отслеживали это, и прирост широты поиска сопровождался более высокими оценками оценщика, а не достигался в ущерб им. В наших экспериментах прогон с модифицированным вознаграждением за 50 шагов превосходил прогоны без него за 200 шагов.

Это полуверифицируемое вознаграждение: оценка качества с помощью LLM в сочетании с объективными, поддающимися подсчету сигналами о поведении. По нашему опыту, оно часто превосходит вознаграждение, основанное исключительно на LLM-судье. Объективные составляющие дают устойчивый, трудно поддающийся обману сигнал о том, что можно сосчитать, а судья фиксирует качества, которые невозможно вычислить с помощью простых метрик. Чисто верифицируемые вознаграждения неприменимы для большинства реальных задач. Для хорошего исследовательского отчета не существует юнит-теста.

Изменение вознаграждения также не является методом «настроил и забыл». Правильные компоненты и веса зависят от того, насколько сильна модель, и по мере продвижения обучения может потребоваться их повторная настройка. Мы делали это и в других проектах, и это нормальная часть процесса запуска RL для реальных задач.

Комбинирование методов

По своей сути схема обучения состоит из трех этапов:

  • Поисковое RL (Search RL): нацелено на широту исследований и использование инструментов, обучение происходит с использованием модифицированного вознаграждения. Собственный отчет агента откладывается в сторону, а замороженный сильный писатель создает отчет на основе проведенного им исследования, благодаря чему вознаграждение отражает качество самого исследования, а не еще слабые навыки письма модели.

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

  • Обучение с учителем (SFT) для письма: начиная с обученной поиску модели, применяется плотное监督 (supervised) на этапе синтеза, объединяя собственные траектории исследований модели с высококачественными отчетами, написанными строго на основе этих данных. На этом этапе ходы исследования остаются закрепленными, поэтому модель учится писать, не забывая при этом, как искать.

Обучение с учителем (SFT) для письма: начиная с обученной поиску модели, применяется плотное supervision на этапе синтеза, объединяя собственные траектории исследований модели с высококачественными отчетами, написанными строго на основе этих данных. На этом этапе ходы исследования остаются закрепленными, поэтому модель учится писать, не забывая при этом, как искать.

  • Сквозное (end-to-end) RL: полный цикл агента, совместное обучение поиску и письму с использованием того же сформированного вознаграждения для сглаживания эффектов SFT, чтобы оба этапа хорошо работали вместе.

Сквозное (end-to-end) RL: полный цикл агента, совместное обучение поиску и письму с использованием того же сформированного вознаграждения для сглаживания эффектов SFT, чтобы оба этапа хорошо работали вместе.

С тех пор мы повторили этот рецепт с нуля в контролируемых исследованиях по воспроизводимости, изменяя по одной переменной за раз, и воспроизвели результат.

В ходе проверки Genspark по сравнению со своей предыдущей рабочей моделью новая модель показала сильные стороны в качестве цитирования, подтверждении данных из разных источников и обработке сложных многокомпонентных инструкций. Кроме того, она обрабатывала в 5 раз больше источников на один запрос по сравнению с базовой моделью.

Развертывание для продакшена по разумной стоимости

Экономическая эффективность была важнейшим фактором в этом проекте, поэтому развертывание планировалось с самого начала. Мы квантовали веса экспертов до NVFP4 и сохранили дообученные слои внимания в полной точности. На нашем полном наборе тестов модель NVFP4 не уступала модели с полной точностью в пределах погрешности тестов, при этом требования к GPU на один репликатор сократились вдвое — с 4 × B200 до 2 × B200 в формате FP8. Маршрутизация с учетом кеша удерживает каждую исследовательскую сессию на одном и том же репликаторе. Каждый запрос декодируется со скоростью около 160 токенов/с в продакшене, а при тестировании под нагрузкой один репликатор удерживал показатель выше целевого значения Genspark в 110 токенов/с при одновременной обработке до 8 запросов.

Genspark проверила квантованную модель в своей собственной инфраструктуре с помощью серии тестов, а затем постепенно внедрила ее, начав с небольшой доли производственного трафика и увеличивая ее до тех пор, пока модель не стала стандартной для Deep Research.

Уроки, которые мы извлекли

  • Разбивайте задачу на подкомпоненты, если они есть. Широта исследований и синтез отчетов — это разные типы поведения с разными критериями успеха. Их раздельная оценка показала, где модель была слаба, и позволила нам целенаправленно работать над каждым из аспектов.

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

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

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

  • Оценки требуют итераций и настройки, чтобы стать хорошим вознаграждением. Оценщик — это отправная точка: проведите его стресс-тестирование с клиентом и дорабатывайте по мере того, как в ходе проверок будут выявляться новые предпочтения. Чтобы обучать модель на его основе, добавьте формирующие термины, которые дают четкий сигнал для желаемого поведения, а судья должен быть настроен так, чтобы пресекать попытки модели обмануть систему.

Оценки требуют итераций и настройки, чтобы стать хорошим вознаграждением. Оценщик — это отправная точка: проведите его стресс-тестирование с клиентом и дорабатывайте по мере того, как в ходе проверок будут выявляться новые предпочтения. Чтобы обучать модель на его основе, добавьте формирующие термины, которые дают четкий сигнал для желаемого поведения, а судья должен быть настроен так, чтобы пресекать попытки модели обмануть систему.

  • Воспринимайте отзывы владельца продукта как сигнал для обучения. Самые важные требования исходили от команды Genspark, которая генерировала результаты с помощью нашей модели и изучала их, а не от оценщика. Каждый раунд их отзывов превращался в новый термин вознаграждения или цель обучения.

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

Работа с Baseten Applied Research

Большинство проектов по прикладным исследованиям начинаются по-разному, но мы часто замечаем, что реальные рабочие нагрузки в продакшене отличаются от того, что изучается в академических кругах. Значительная часть академической литературы по RL изучает полностью проверяемые домены, такие как математика и программирование. Большинство рабочих нагрузок клиентов, таких как исследования, написание текстов и анализ, подлежат экспертной оценке, а не автоматической проверке. Обучение для таких нагрузок требует полупроверяемых вознаграждений, которые сочетают оценки LLM с объективными метриками, и именно в этом мы специализируемся.

Наша работа включает в себя создание или доработку оценки, диагностику слабых мест модели, выбор и запуск правильных методов обучения, превращение отзывов о продукте в сигнал для обучения и оптимизацию развертывания. Было здорово работать с Genspark, и поскольку они сохраняют у себя веса, оценки и код обучения, модель будет постоянно совершенствоваться.

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

Свяжитесь с командой Baseten Applied Research здесь.

← Все статьи

О чём эта статья

Ещё в разделе «AI и машинное обучение»

Все →
Open source TTS против платных API: как сделать правильный выбор
ElevenLabs

Open source TTS против платных API: как сделать правильный выбор

Ling 3.2 Flash: флагманская мультимодальная модель с 560 млрд параметров, обрабатывающая 30 секунд за раз
OrcaRouter

Ling 3.2 Flash: флагманская мультимодальная модель с 560 млрд параметров, обрабатывающая 30 секунд за раз

Ling 3.2 Flash против MiniMax M3.1 Flash: одинаковое окно в 1 млн токенов, но разные ценники
OrcaRouter

Ling 3.2 Flash против MiniMax M3.1 Flash: одинаковое окно в 1 млн токенов, но разные ценники

Масштабирование интеллекта: знаковая комиссия и выставка
Modal

Масштабирование интеллекта: знаковая комиссия и выставка

Представляем специалистов по внедрению креативных решений (Forward Deployed Creatives) в ElevenCreative
ElevenLabs

Представляем специалистов по внедрению креативных решений (Forward Deployed Creatives) в ElevenCreative

Программное обеспечение для онбординга поставщиков: как агентный ИИ автоматизирует настройку, комплаенс и интеграцию с ERP
Automation Anywhere

Программное обеспечение для онбординга поставщиков: как агентный ИИ автоматизирует настройку, комплаенс и интеграцию с ERP

Ещё от Baseten

Самая быстрая в мире синхронизация дельт весов
Baseten

Самая быстрая в мире синхронизация дельт весов

Расписания автомасштабирования: сокращение задержек холодного старта при прогнозируемом трафике
Baseten

Расписания автомасштабирования: сокращение задержек холодного старта при прогнозируемом трафике

Baseten и Postman: создание надежных и экономически эффективных агентов для бизнеса
Baseten

Baseten и Postman: создание надежных и экономически эффективных агентов для бизнеса

Решения за пенни: представляем joey-1, нашу самую быструю модель принятия решений
Baseten

Решения за пенни: представляем joey-1, нашу самую быструю модель принятия решений

Самая быстрая и дешевая пакетная транскрипция с Qwen3-ASR
Baseten

Самая быстрая и дешевая пакетная транскрипция с Qwen3-ASR

Представляем новых руководителей инженерного направления в Baseten
Baseten

Представляем новых руководителей инженерного направления в Baseten