Функция asyncio.wait() это еще один способ вызвать множество асинхронных задач.
Она работает в нескольких режимах.
1. Самый простой - ждем завершения всех задач
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(10)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.ALL_COMPLETED
)
for task in done:
try:
print(task.result())
except Exception as e:
print(e)
Очень похоже на gather, но работает не так.
▫️возвращает не результаты, а два сета с объектами Task у которых можно забрать результат через task.result() если они в списке done
▫️не гарантирует порядок результатов так как оба объекта это set
▫️не выбрасывает исключение когда оно появляется, а сохраняет его в Task. Исключение появится когда попробуете забрать резултьтат.
2. Ждем завершения первой задачи, даже если там ошибка.
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(3)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_COMPLETED
)
# в done может быть несколько задач!
for task in done:
try:
print(task.result())
except Exception as e:
print(f"Fail: {e}")
# Оставшиеся задачи в pending, как правило, нужно отменить, иначе они будут продолжать работать
for task in pending:
task.cancel()
В сете done будут таски которые успели завершится, причем как успешно так и нет.
3. До первой ошибки.
Тоже самое, но с аргументом FIRST_EXCEPTION
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_EXCEPTION
)
Функция завершается как только первая задача упадет с ошибкой.
Учтите, что в любом случае done вы можете обранужить несколько задач, как с ошибками так и успешные.
↗️ Полный листинг примеров здесь
#async
⚡️Step 3.5 Flash: модель с гибридной архитектурой внимания и скоростью до 350 т/сек.
StepFun выпустили Step 3.5 Flash - очень интересную MoE-модель на 196 млрд. общих и 11 активных параметров.
Авторы заявляют сумасшедшую скорость до 300 токенов в секунду, а на задачах с кодом она, якобы, разгоняется до 350. Для модели такого уровня это очень бодро.
🟡Внутри накрутили много всего.
Вместо стандартного механизма внимания использовали гибридную схему: один слой полного внимания на 3 слоя скользящего окна, что позволило запихнуть в модель контекст на 256 тыс. токенов и при этом не забивать память до отказа.
В обучении использовали алгоритм MIS-PO, который помог решить проблему с потерей нити в длинных CoT, н просто отсекает варианты, которые слишком сильно уходят в сторону от логики.
Модель, как стало модно сейчас, затачивали под автономных агентов. Она умеет пользоваться десятком инструментов одновременно. В режиме Deep Research модель сама гуглит, планирует этапы и пишет отчеты размером до 10 тысяч слов.
Если нужно прогнать через модель тяжелый репозиторий с кодом, она справляется без тормозов, которые обычно возникают при работе с объемными текстами.
Завезли даже сценарии гибридного взаимодействия: это когда сервер планирует задачу, а локальная модель исполняет ее прямо на устройстве, например, управляя приложениями в смартфоне.
🟡Бенчмарки
Step 3.5 Flash набрала 97,3 на тесте AIME 2025 (и это голый ризонинг, без сторонних калькуляторов). Если же дать ей доступ к Python, результат взлетает до 99,8.
На кодовых бенчмарках цифры тоже выглядят красиво: в SWE-bench она выдает 74,4%, а на Terminal-Bench 2.0 - 51.0%.
Конечно, по плотности упаковки знаний Step 3.5 Flash пока уступает Gemini 3.0 Pro, но сам факт, что она доступна для локального использования и тестов через API, радует.
📌Лицензирование: Apache 2.0 License.
🟡Статья
🟡Модель
🟡Demo
🟡Сообщество в Discord
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#LLM#StepFunAI
🌟Step3-VL-10B: VLM от stepfun.ai.
Пока индустрия одержима гигантоманией и соревнуется, у кого больше параметров, Stepfun решили пойти против течения.
Встречайте, Step3-VL-10B - компактная VL-модель, которая по заявлениям разработчиков не просто конкурирует, а буквально уделывает модели в 10–20 раз тяжелее, включая таких титанов, как Gemini 2.5 Pro и GLM-4.6V.
Звучит как маркетинговый хайп, но под капотом есть интересные инженерные решения, хоть и с хитринкой.
🟡Архитектура
Конструкция из кастомного визуального PE-lang энкодера на 1.8B параметров и Qwen3-8B (что уже половина успеха, учитывая мощь Qwen) в качестве декодера.
В отличие от многих, кто замораживает визуальную часть, Stepfun разморозили все и тренировали модель в один прогон на 1,2 трлн. токенов. Это позволило визуальной и языковой частям модели не просто сосуществовать, а реально срастись и притереться друг к другу.
После этого модель прогнали через адский RL-цикл (RLVR+RLHF) на 1400+ итераций, чтобы модель научилась жестко ризонить.
🟡Тесты
В бенчмарках цифры действительно страшные (в хорошем смысле) для такого размера:
🟢MMMU: 78.11 (SeRe) / 80.11 (PaCoRe).
🟢MathVista: 83.97
🟢AIME 2025: 87.66 (SeRe) / 94.43 (PaCoRe)
🟢OCRBench: 86.75 (отлично читает документы).
Для сравнения: GLM-4.6V на 106B выдает на MMMU только 75.20.
Инженерная хитринка кроется в методологии тестирования. Видите в результатах тестов пометку PaCoRe?
PaCoRe (Parallel Coordinated Reasoning):
Чтобы получить топовые цифры, модель использует test-time compute. Она запускает 16 параллельных роллаутов, собирает доказательства из разных веток и синтезирует ответ.
На инференсе это будет стоить вам в 16 раз "дороже" по ресурсам, чем обычный прогон. В стандартном режиме (SeRe) модель все еще хороша, но уже не выглядит как "убийца всех топов".
Кстати, Stepfun честно признались, что в отчетах накосячили с бенчмарками конкурента Qwen3VL-8B из-за неверного max_tokens. Извинились, обещают пересчитать. Это добавляет доверия, но напоминает, что бенчмарки - дело тонкое.
В общем, модель - отличный кандидат для локального использования: есть OpenAI-compatible API и vLLM поддерживается (PR вмержили).
⚠️ Если модель зацикливается при генерации - обновите конфиг, там был баг с eos_token_id, который уже пофиксили.
📌Лицензирование: Apache 2.0 License.
🟡Модель
🟡Arxiv
🟡Demo
@ai_machinelearning_big_data
#AI#ML#VLM#STEP3#StepFunAI