Современный мир open-source ИИ несправедлив. Когда 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().
И тут Python выдал ошибку.
Шаг 2. Атака фантомных тензоров
При попытке запустить промпт через микро-модель PyTorch выдал фатальную ошибку.
В чём дело?
Мы столкнулись со скрытой анатомией 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.
Мы принудительно установили количество групп ключей равным числу голов запросов — 8. Это создало идеальную симметрию 8:8, совместимую с обычным multi-head attention.
Шаг 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