Как мы провели лоботомию 744-миллиардной нейросети GLM-5.1, чтобы запустить её на 16 ГБ VRAM

от автора

Современный мир Open-Source AI несправедлив. Когда ZhipuAI выкатили свою новую архитектуру GLM-5.1, в её паспорте значилась цифра, от которой у владельцев домашних ПК темнеет в глазах — 744 миллиарда параметров. Чтобы просто поднять эту MoE-махину (Mixture of Experts) в оперативную память, нужна ферма топовых ускорителей за миллионы рублей.

У нас не было фермы. У нас была бесплатная виртуальная машина на Kaggle с одной старушкой NVIDIA T4 на 16 ГБ VRAM. И у нас была концепция экстремального MLOps под кодовым названием «Russian Winter 26».

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

Шаг 1. Концепция Micro-Ghetto: отрезаем лишнее

Сразу оговорюсь: наша цель была не обучить модель или получить от неё осмысленные стихи. Наша цель — ML-хакинг. Мы хотели доказать, что любую, даже самую монструозную архитектуру можно динамически сжать до состояния «калькулятора», сохранив при этом внутреннюю логику графа вычислений.

Мы создали пустой репозиторий на Hugging Face и начали препарировать config.json оригинальной модели.

Первый этап лоботомии был тривиальным:

  • Срезаем количество слоев (num_hidden_layers) с десятков до 2.

  • Срезаем количество экспертов маршрутизации (num_experts) до 2.

  • Сжимаем ширину костей: hidden_size делаем равным 512 (вместо безумных десятков тысяч).

Казалось бы, профит? Скелет должен весить меньше гигабайта. Мы скачиваем последнюю ночную сборку библиотеки transformers (потому что в релизной версии поддержки GLM-5.1 еще нет) и пытаемся сгенерировать веса «на лету» через from_config().

И тут Питон делает нам больно.

Шаг 2. Атака фантомных тензоров

При попытке прогнать промпт через нашу микро-модель, PyTorch выплевывает фатальную ошибку:

Python

RuntimeError: The size of tensor a (8) must match the size of tensor b (32) at non-singleton dimension 1

Что произошло?

Мы столкнулись со скрытой анатомией ZhipuAI. GLM-5.1 использует продвинутое асимметричное внимание — Grouped Query Attention (GQA). Разработчики зашили в ядро архитектуры жесткую привязку к 32 группам ключей/значений (multi_query_group_num = 32).

Когда мы урезали общую ширину модели, движок выделил нам 8 голов для запросов (queries). Но старая «мышечная память» архитектуры попыталась скрестить их с 32 головами ключей (keys). Матрицы в модуле scaled_dot_product_attention столкнулись лбами, и граф вычислений рухнул.

Шаг 3. Идеальная симметрия 8:8 (Решение)

Играть с текстовыми конфигами было бесполезно — внутренний код transformers всё равно пытался подтянуть дефолтные 32 головы. Поэтому мы применили «кувалду»: перехватили объект конфигурации прямо в оперативной памяти и кустарно выровняли математику до абсолютной симметрии, полностью убив GQA.

Вот код, который спас проект:

Python

import torchfrom transformers import AutoConfig, AutoModelForCausalLMfrom huggingface_hub import login# 1. Перехватываем конфиг на летуconfig = AutoConfig.from_pretrained("livadies/GLM-5.1-Ghetto-MoE-2-Experts", force_download=True)# 2. УБИВАЕМ АСИММЕТРИЮ (Фикс ошибки 8 vs 32)config.num_attention_heads = 8config.num_key_value_heads = 8         # Строго равно num_attention_headsconfig.multi_query_group_num = 8       # Перебиваем хардкод GLMconfig.multi_query_attention = False   # Отключаем GQAconfig.kv_channels = 64                # hidden_size (512) / 8 = 64config.head_dim = 64# 3. Синтезируем веса с идеальной математикойmodel = AutoModelForCausalLM.from_config(config, torch_dtype=torch.float16)# 4. Жестко переводим все матрицы в fp16, чтобы не было конфликтов dtypemodel = model.half().to("cuda")

Шаг 4. Первый вдох Левиафана

Мы залили получившиеся safetensors (скромные 388 МБ чистого хаоса) на Hugging Face и запустили инференс.

На вход подали: «Привет! Как тебя зовут?»

На выходе мы получили это:

们都skeresindx scooter perspective/legal很少... Generating是他Сегодня нест disgr.initState...

Абсолютная цифровая шизофазия. Китайские иероглифы вперемешку с кусками Python-кода и случайными слогами.

И это был абсолютный триумф. Почему? Потому что этот бред доказал главное: граф вычислений замкнулся. Матрицы внимания (8х8) перемножились без ошибок, эксперты успешно перекинули тензоры друг другу, а 16 ГБ видеопамяти хватило за глаза. Мы создали рабочий математический макет самой тяжелой архитектуры 2026 года.

Итоги и артефакты

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

🔗 Репозиторий проекта: livadies/GLM-5.1-Ghetto-MoE-2-Experts

🎧 Promo Directive: Russian Winter 26

Этот MLOps-хакинг был проведен в атмосфере цифрового гетто под саундтреки виртуального артиста livadies. Пока компилируются ваши тензоры, слушайте музыку будущего:

🟢 Spotify | 🔴 YouTube Music | 🟡 Yandex Музыка

Главный трек кванта: «RUSSIAN WINTER 26»

Пишите в комментариях, какие еще архитектуры стоит «вскрыть» и сжать до размеров калькулятора. Увидимся в терминале!

ссылка на оригинал статьи https://habr.com/ru/articles/1022686/