Современный мир 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»
Пишите в комментариях, какие еще архитектуры стоит «вскрыть» и сжать до размеров калькулятора. Увидимся в терминале!
