Все новости
Ежедневный обзор

Главные новости ИИ и GPU за день

7 практических материалов об ИИ и GPU, опубликованных в нашем Telegram-канале 2026-09-26.

27 сентября 2026

Главные новости ИИ и GPU за день
Искусственный интеллект1/7

PyTorch: model.eval() ещё не отключает autograd

PyTorch: model.eval() ещё не отключает autograd

В собственном inference-коде одного model.eval() недостаточно: он переключает поведение таких слоёв, как Dropout и BatchNorm, но не отключает запись графа для градиентов. Для чистого inference есть torch.inference_mode(); сам он не включает eval-режим.

Зачем: ненужный autograd может тратить VRAM и время на запрос, хотя обучение не идёт. Прежде чем брать GPU побольше, проверьте путь выполнения.

Как применить: 1. Убедитесь, что это только предсказание: ни backward, ни дальнейших вычислений с этими tensors под autograd не будет. 2. Для загруженной модели и подготовленного входа используйте: model.eval() with torch.inference_mode(): output = model(**inputs) 3. Сравните с прежним кодом на одинаковых inputs, batch size и precision. После warmup измерьте пик torch.cuda.max_memory_allocated(), сбросив статистику перед каждым прогоном через torch.cuda.reset_peak_memory_stats(). Удаляйте результаты предыдущего прогона; проверьте качество ответа.

Ловушка: tensors, созданные в inference mode, нельзя использовать в вычислениях, записываемых autograd. Для такого сценария рассмотрите torch.no_grad(). Готовый runtime уже может отключать градиенты — дополнительной экономии тогда не обещаем. Это не quantization: веса не становятся меньше.

Каталог GPU: https://verum-ai.uz — наличие конфигурации уточняйте отдельно.

Искусственный интеллект2/7

Бот «забыл» правила на втором сообщении?

Бот «забыл» правила на втором сообщении?

Факт: в OpenAI Responses API параметр previous_response_id связывает ответы в диалог, но текст из поля instructions предыдущего запроса не переносится в следующий. История разговора и текущие инструкции — не одно и то же.

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

Как применить: 1. Вынесите постоянные правила в одну переменную RULES в приложении, отдельно от пользовательского текста. 2. В каждом вызове передавайте instructions=RULES. При продолжении добавляйте previous_response_id=last.id; одного ID недостаточно для переноса этого поля. 3. Проверьте два хода подряд: сначала извлечение фактов из текста, затем «добавь ещё один пункт». Убедитесь, что оба запроса содержат правила, а второй ответ не дополняет отсутствующие сведения догадками.

Шаблон для instructions: Отвечай по-русски. Формат: факт | цитата из входного текста. Используй только предоставленные сведения. Если подтверждения нет, напиши «нет данных»; не достраивай ответ догадками.

Ограничение: это поведение конкретного поля API, не утверждение, что вся история исчезает или обычный ChatGPT работает так же. Повтор инструкций не гарантирует правильность фактов — цитаты всё равно сверяйте.

Каталог GPU Verum: https://verum-ai.uz

Искусственный интеллект3/7

gpt-oss-20b: сначала chat template, потом оценка модели

gpt-oss-20b: сначала chat template, потом оценка модели

OpenAI выпустила gpt-oss-20b 5 августа 2025 года: текстовая MoE-модель, около 21B параметров, 3.6B активных, context 131 072 tokens, открытые веса под Apache 2.0. В семье есть и 120b. Это не новинка дня, а практический разбор локального inference.

Факт: модель обучена на формате Harmony. OpenAI предупреждает: без него корректная работа не гарантируется. Обычная строка с вопросом — не замена chat template.

Зачем: прежде чем списывать странный ответ на слабую модель или покупать GPU мощнее, проверьте упаковку входа.

Три шага: 1. Загружайте tokenizer именно из openai/gpt-oss-20b, не от другой модели. 2. В Transformers передавайте список сообщений в chat pipeline — он применит шаблон. Если вызываете model.generate напрямую, сначала подготовьте input через tokenizer: ids = tokenizer.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_tensors="pt" ) Здесь messages — список объектов с role и content; готовые ids передайте модели на нужном device. 3. Проверьте короткий диалог из двух ходов. Разбирайте ответ по каналам Harmony: пользователю нужен final, а не сырой поток со служебными tokens и analysis.

GPU и ограничение: OpenAI указывает запуск 20b в пределах 16 GB памяти при MXFP4 для MoE-весов. Это не обещание любого context/batch или fine-tuning в том же объёме. Измеряйте VRAM на своих запросах. Правильный формат не устраняет factual errors и сам не исполняет tools.

Каталог GPU Verum: https://verum-ai.uz — доступность конфигурации уточняйте отдельно.

GPU и инфраструктура4/7

CUDA упала на .cpu()? Причина может быть раньше

CUDA упала на .cpu()? Причина может быть раньше

Факт. PyTorch обычно запускает GPU-операции асинхронно. Ошибка может проявиться при более позднем вызове, поэтому строка в stack trace не всегда указывает на операцию, которая её вызвала. Для отладки CUDA_LAUNCH_BLOCKING=1 делает CUDA-вызовы синхронными.

Зачем: прежде чем менять GPU или драйвер, найдите проблемную операцию на минимальном примере, а не чините случайную строку из traceback.

Три шага: 1. Сохраните input, на котором воспроизводится сбой. Выделите минимальный пример в repro.py; уберите посторонние запросы и нагрузку. 2. В новом процессе запустите его с флагом, заданным до старта Python. Linux/Bash: CUDA_LAUNCH_BLOCKING=1 python repro.py 3. По новому traceback проверьте shapes, dtype и допустимые значения индексов у проблемной операции. Исправьте причину, затем повторите тот же тест без флага — в обычном асинхронном режиме.

Ограничение: флаг не исправляет ошибку и не доказывает неисправность GPU. Он меняет порядок ожидания операций и может замедлить выполнение; не оставляйте его в production и не измеряйте с ним рабочую производительность.

На https://verum-ai.uz есть каталог GPU; наличие нужной конфигурации уточняйте отдельно.

Источник PyTorch: https://docs.pytorch.org/docs/2.14/notes/cuda.html#asynchronous-execution

Искусственный интеллект5/7

Qwen3.5-9B: Base — не готовый чат-бот

Qwen3.5-9B: Base — не готовый чат-бот

В семействе Qwen3.5 от команды Qwen есть два похожих имени, но разные назначения. Qwen/Qwen3.5-9B — post-trained модель. Qwen/Qwen3.5-9B-Base прошла только pre-training: авторы предназначают её для fine-tuning и исследований, а не прямого общения.

Почему важно: если Base плохо выполняет инструкции, более мощная GPU не превратит её в обученного ассистента. Сначала проверьте checkpoint, а уже потом меняйте prompt или сервер.

Как применить: 1. В конфигурации загрузки проверьте полный model ID. Для готового диалога начните с Qwen/Qwen3.5-9B, без суффикса -Base, и её официального chat template. 2. До нагрузочного теста проверьте выполнение ваших инструкций: нужный язык, формат ответа, работу с изображениями. Проверяйте содержание, а не только красивый формат. 3. Base выбирайте для осознанного эксперимента с обучением. В её model card указано, что control tokens уже обучены для LoRA-style PEFT с официальным template — без необходимости дообучать embeddings ради этих токенов.

Ограничение: наличие chat template не означает instruction tuning. LoRA не гарантирует, что обучение поместится на GPU, подходящей для inference: измеряйте пик VRAM на своих длине последовательности и batch size. Универсального требования к GPU здесь не заявляем.

Каталог GPU Verum: https://verum-ai.uz — доступность конфигурации уточняйте отдельно.

GPU и инфраструктура6/7

CUDA OOM при загрузке? Не создавайте лишнюю копию весов на GPU

CUDA OOM при загрузке? Не создавайте лишнюю копию весов на GPU

Факт. Если checkpoint содержит GPU-тензоры, torch.load() по умолчанию возвращает их на GPU. PyTorch рекомендует map_location="cpu" и затем load_state_dict(), чтобы избежать всплеска VRAM при загрузке.

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

Три шага для обычного PyTorch state_dict: 1. Создайте модель нужной архитектуры на CPU, не вызывая .cuda() в конструкторе. 2. Загрузите доверенный файл на CPU и скопируйте веса в модель: state = torch.load("weights.pt", map_location="cpu", weights_only=True) model.load_state_dict(state) 3. Удалите временный словарь, затем перенесите модель на GPU: del state model = model.to("cuda")

Ограничение: CPU RAM должна вместить модель и checkpoint. Приём убирает лишнюю GPU-копию при загрузке, но не уменьшает сами веса, KV cache или activations. Это не универсальный рецепт для sharded/quantized loaders. Даже с weights_only=True не загружайте файлы неизвестного происхождения.

На https://verum-ai.uz есть каталог GPU с объёмами VRAM — сравнивайте их после проверки пика памяти, а не только размера файла.

Источник: https://docs.pytorch.org/docs/stable/generated/torch.load.html

Искусственный интеллект7/7

Агент спешит: два tool calls вместо одного?

Агент спешит: два tool calls вместо одного?

Факт. В OpenAI API параметр parallel_tool_calls: false ограничивает ответ модели нулём или одним function call. Это полезно, когда следующий шаг зависит от результата предыдущего: сначала создать заявку, затем прикрепить файл по полученному ID.

Как применить 1. В запросе Responses API с вашими function tools добавьте "parallel_tool_calls": false. Это настройка API, а не фраза в prompt. 2. Приложение проверяет аргументы и права, выполняет разрешённый вызов и возвращает модели function_call_output с соответствующим call_id. 3. Только после результата запрашивайте следующий шаг. Если создание заявки завершилось ошибкой, код приложения должен блокировать прикрепление файла — одного указания модели недостаточно.

Шаблон инструкции: Сначала создай заявку. Прикрепляй файл только после успешного результата и используй ID из него. Если создание не удалось — остановись и сообщи ошибку.

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

Каталог GPU-конфигураций Verum: https://verum-ai.uz Источник: https://developers.openai.com/api/docs/guides/function-calling