Современный мир 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 torch from transformers import AutoConfig, AutoModelForCausalLM from 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 = 8 config.num_key_value_heads = 8 # Строго равно num_attention_heads config.multi_query_group_num = 8 # Перебиваем хардкод GLM config.multi_query_attention = False # Отключаем GQA config.kv_channels = 64 # hidden_size (512) / 8 = 64 config.head_dim = 64 # 3. Синтезируем веса с идеальной математикой model = AutoModelForCausalLM.from_config(config, torch_dtype=torch.float16) # 4. Жестко переводим все матрицы в fp16, чтобы не было конфликтов dtype model = 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»
Пишите в комментариях, какие еще архитектуры стоит «вскрыть» и сжать до размеров калькулятора. Увидимся в терминале!
Комментарии (19)

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

janvarev
13.04.2026 07:47Как я понял - да. Непонятно, почему операция обрезки называется "сжатием" - так вообще можно 1 нейрон оставить, и через него активацию провести, смысл только...

Livadies Автор
13.04.2026 07:47Справедливое замечание про термины. Технически это экстремальный структурный прунинг (лоботомия), а не классическое сжатие вроде квантования. Но ваш аргумент про «1 нейрон» здесь совершенно не работает.
Если вы оставите 1 нейрон, вы не протестируете сложную кастомную архитектуру. Смысл нашего скелета именно в сохранении топологии:
Мы оставили 2 эксперта (MoE), чтобы протестировать логику роутинга токенов (как движок раскидывает вычисления).
Мы сохранили Attention-блоки, чтобы поймать и исправить зашитый в ядро конфликт GQA (когда ключей 32, а голов 8). 1 нейрон вам эту ошибку не выдаст.
В чем практический смысл? Это классический подход Zero-Cost MLOps. Представьте, что вам нужно написать свой кастомный инференс-сервер или отладить скрипт распределенного обучения для этой архитектуры. Зачем арендовать кластер H100 за тысячи долларов просто для дебага кода? Вы берете этот рабочий микро-скелет, запускаете на локальном ноутбуке, отлаживаете весь пайплайн (потому что графы вычислений идентичны), а уже потом деплоите реальные 744B веса на проде.
Это инструмент для инженеров-архитекторов, а не готовый бот для болтовни.

janvarev
13.04.2026 07:47Представьте, что вам нужно написать свой кастомный инференс-сервер или отладить скрипт распределенного обучения для этой архитектуры. Зачем арендовать кластер H100 за тысячи долларов просто для дебага кода?
А, теперь кейс понятен - да, здесь, возможно, имеет смысл. Фактически для "поиграться с архитектурой конкретной модели дев-инженеру без H100".
Я бы, конечно, все-таки сказал, что имеет смысл сделать модель с такой же архитектурой, но под 16 Гб и там уже все тестировать - потому что не факт, что выводы ML инженера для лоботомированной модели также подойдут для полноценной (скорость обучения, инференса и прочего может сильно разнится) - но подход теоретически имеет смысл.
UPD: Хотя для желающих с этим "играться" я бы все-таки взял полноценную H100 в аренду. Если компания хочет использовать подобные штуки сама, то аренда по-любому не должна сжирать много денег по ее меркам, а результаты будут точнее.

Livadies Автор
13.04.2026 07:47Так мы буквально это и сделали) Наш билд — это и есть та самая оригинальная архитектура
glm_moe_dsaсо всей её специфической логикой роутинга, просто смасштабированная (downscale) по ширине матриц под 16 ГБ.Вы абсолютно правы в том, что замерять на ней скорость обучения или метрики инференса — бессмысленно. Но для отладки самого кода обвязки, проверки пайплайнов и настройки API-сервера перед деплоем на прод — это идеальный и бесплатный вариант.

Livadies Автор
13.04.2026 07:47Почти, но вы упускаете саму суть эксперимента. Вы сравниваете наш билд с моделями, которые изначально проектировались под 16 ГБ VRAM.
А мы взяли архитектуру, оригинальный чекпоинт которой требует около 1.5 терабайт видеопамяти и кластер из H100 в дата-центре просто для того, чтобы загрузиться.
Моя цель была не сделать «умного чат-бота», а провести стресс-тест самого движка. Заставить сложнейший граф вычислений корпоративного MoE-монстра (с его специфическим Grouped Query Attention) проинициализироваться, обойти зашитые в код конфликты размерностей тензоров и отработать без OOM на слабой карточке 2016 года.
Это хардкорный MLOps-инжиниринг и проверка гибкости фреймворка, а не соревнование по качеству генерации текста. Шизофазия на выходе — это лишь индикатор (print statement), подтверждающий, что математика перемножения урезанных матриц сошлась без ошибок ядра.

kuza2000
13.04.2026 07:47Эм... даже не знаю, что тут сказать... А нафига?))

Livadies Автор
13.04.2026 07:47Это тестовый полигон. Чтобы научиться управлять корпоративными моделями на сотни миллиардов параметров и писать под них пайплайны, нужно сначала собрать их рабочий микро-скелет на дешевом железе. Иначе отладка и деплой на реальных кластерах за миллионы долларов превращается в рулетку.

gliderman
13.04.2026 07:47Ожидал увидеть в статье рецепт как загрузить плотную Gemma4 на 8-16 гигов видеопамяти. типа из этих https://huggingface.co/unsloth/gemma-4-31B-it-GGUF - без потери качества или минимально. Ну как если бы размер был как у 2бит, а качество как у 16бит.

Livadies Автор
13.04.2026 07:47Тензоры размаж между видеокартой, vram cpu и диском ...на Т4 я так запускаю модели под 64-80 гб веса

vpman
13.04.2026 07:47Запустить то с офолоадом можно, но, например плотная гемма4 31б на 4090_48Gb выдает не больше 30t/s. А при офлоаде даже 1 слоя тензоров на ЦПУ скорость падает почти на треть, и с каждым слоем все сильнее. При соотношении VRAM-RAM 50 на 5, скорость с 12 потоками CPU - 3-4 t/s.
Перспективно выглядят попытки сделать REAP версии больших моделей МОЕ, где вырезаются "лишние" эксперты, которые могут не использоваться в прикладных задачах.
Надеюсь сделают обрезание для Minimax 2.7, чтобы не Q2 загружать, а Q4_M, хотя бы. Хотя и Q2 работает на удивление неплохо.
Livadies Автор
13.04.2026 07:47https://huggingface.co/livadies/MiniMax-M2.7-Ghetto-MoE-8-Experts вот я оставил всего 8 экспертов Minimax 2.7 на 15 гб карты т4 2016 года запускается только в путь

Lissodelphis
13.04.2026 07:47Интересно. А как вырезать ненужных экспертов из моделей? Есть где мануал? Тогда просто можно нарезать ту же гемма4-мое на несколько моделей-с пометкой - какая тема у эксперта. Да и более крупные модели тогда можно резать.

vpman
13.04.2026 07:47На сколько мне известно, прогоняются целевые запросы (например по кодингу) через модель, и на ее роутере считается активация каждого эксперта. Те, которые наберут меньше активаций в последствии вырезаются. Проблема в том, что эксперты могут равномерно распределять веса, и их удаление может сильно ухудшить качество.
Гемму4 уже рипнули https://huggingface.co/mradermacher/gemma-4-21b-a4b-it-REAP-heretic-GGUF и еще много других на HF

Livadies Автор
13.04.2026 07:47есть мануал он на три этапа делится: Прежде чем резать, нужно понять, кто в модели «балласт», а кто — «мозг». ФИЗИЧЕСКАЯ ЭКСТРАКЦИЯ и ПАТЧ РОУТЕРА в следующих статьях буду более подробно раскрывать суть метода на примерах кастрации разных моделей
jarkevithwlad
такое громкое название, а по факту:
Абсолютная цифровая шизофазия...
Livadies Автор
В этом и суть кейса) Цель была не стихи генерировать, а заставить ядро корпоративного монстра, под которого нужны серверные фермы, инициализироваться и замкнуть граф вычислений на карточке 2016 года (T4).
Эта «шизофазия» — техническое доказательство того, что мы победили конфликты размерностей тензоров, обошли хардкод GQA и заставили математику матриц сойтись без переполнения памяти (OOM). Это эксперимент про хардкорный MLOps и взлом архитектуры, а не про NLP-осмысленность.