TL;DR: В этой статье мы возьмем новейшую Gemma 4 31B, которая в оригинале весит 62 ГБ, и заставим её работать и выгружаться на бесплатном Kaggle с лимитом диска в 57 ГБ. Спойлер: нам придется удалять исходники прямо во время работы Python-скрипта.

Введение: Кремниевый голод и санкции

Когда у тебя нет кластера A100, а есть только бесплатные T4 от Google, каждый байт становится полем боя. Мы живем в эпоху, когда модели растут быстрее, чем наши возможности их качать. Но математику не заблокируешь. По заветам нашего «Ghetto AI Manifesto», мы будем использовать «палки, желуди и сырой код», чтобы сделать топовый ИИ доступным каждому.

Проблема: Математика против нас

Gemma 4 31B в float16 весит ~62 ГБ.

Лимит диска на Kaggle — 57.6 ГБ.

Нам нужно:

  1. Скачать 62 ГБ.

  2. Квантовать их в 4 бита (получить еще 18 ГБ).

  3. Выгрузить результат.

Математически это 62 + 18 = 80 ГБ. Система должна была упасть, но мы применили тактику Scorched Earth (Выжженная земля).

Техно-хаки: Как мы это провернули

1. Квантование «на лету»

Мы использовали bitsandbytes и NF4. Главный фокус — device_map="auto". Модель разрезалась пополам и легла в две карты T4 по 15 ГБ.

Note: Мы не ждали конца загрузки, мы начали жать веса сразу, как только они попадали в VRAM.

2. Операция «Аннигиляция кэша»

Это самый грязный хак. Как только модель была полностью загружена в видеопамять, мы вызвали shutil.rmtree() для папки кэша Hugging Face.

Зачем? В Linux можно удалить файл, который открыт процессом. Место в du не освободится сразу, но для новых файлов (шардов выгрузки) оно станет доступным. Мы удалили 62 ГБ исходников, пока Питон держал их в «уме», освободив место для 18 ГБ квантованных весов.

3. YOLO-Push

Вместо стандартного сохранения на диск и последующей выгрузки, мы использовали прямой стриминг push_to_hub.

Python

# Квинтэссенция нашего метода
model.push_to_hub("repo_id", safe_serialization=True)

Результат: Криокамера для монстра

Теперь 31-миллиардная модель, которая «видит» и «понимает» сложный код, весит всего 18.3 ГБ. Она доступна для всех, у кого есть обычная домашняя видеокарта.

Пощупать артефакт можно здесь:

? https://huggingface.co/livadies/gemma-4-31B-Ghetto-NF4

Заключение

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

Stay Ghetto. Stay AI.

Комментарии (13)


  1. youscriptor
    02.04.2026 18:39

    на обычной это какой объем минимальный видеопамяти?


    1. Livadies Автор
      02.04.2026 18:39

      Вот расклад по видеопамяти (VRAM):

      1. Порог вхождения (20–24 ГБ VRAM): Это идеальный вариант. RTX 3090 или 4090 — наши фавориты. Модель залетает целиком, остается место под KV-кэш (контекст) и активации. Будет летать.

      2. На грани (16 ГБ VRAM): На какой-нибудь RTX 4080 или 4070 Ti Super модель целиком не влезет (не хватит буквально 2-3 ГБ). Придется использовать CPU Offloading (выносить часть слоев в обычную оперативку). Работать будет, но скорость упадет с 40-50 токенов/сек до 2-5 токенов/сек.

      3. Ghetto-стайл (8–12 ГБ VRAM): На «народных» картах типа RTX 3060 завести можно только через GGUF (llama.cpp) с жестким разделением слоев между GPU и RAM.

      Итог: Если хочешь комфортно «летать» без тормозов — нужно 24 ГБ. Если готов чуть подождать — хватит и 16 ГБ с небольшим костылем в коде


      1. Livadies Автор
        02.04.2026 18:39

        Минусаторам привет. Вес модели в репозитории — 18.3 GB в формате .safetensors (NF4). Математика: 18.3 ГБ веса + ~1-2 ГБ на активации = 20 ГБ. RTX 3090/4090 справляются. Пруф веса в моем профиле на HF


        1. Annsky
          02.04.2026 18:39

          Это не обычная видеокарта.)


      1. youscriptor
        02.04.2026 18:39

        24 гига это не сказать что обычная видеокарта. У меня к сожалению всего 12 гиг


        1. Livadies Автор
          02.04.2026 18:39

          тогда костыли в коде нужны сам на бесплатном keggle запускаю gemma 4 настолько свежая что у нее нет

          даже официальной поддержки в transformers , приходится регистрировать архитектуру вручную.

          На 12 ГБ твой единственный вариант — GGUF (через llama.cpp). Там есть магия RAM Offloading: можно закинуть 10 ГБ модели в видеопамять, а остаток — в обычную оперативку. Скорость просядет, но "мозги" 31B будут работать на полную.

          А 24 ГБ я указал как порог для "комфортного полета" без костылей. Если хочешь потестить её мощь прямо сейчас и бесплатно — прыгай в Kaggle. Там дают 30 ГБ VRAM (2x T4), на которых я этот 4-битный дамп и собрал. Взлетает с полпинка!


  1. anonymous
    02.04.2026 18:39


    1. Livadies Автор
      02.04.2026 18:39

      Вообще-то здесь статья про квантование LLM и хардкорный MLOps, а не стол заказов. Но ради прикола я скормил твой комментарий той самой 4-битной нейронке, про которую пишу. \n\nОна передает, что твой метод split(' ') ломается о лишние пробелы, а твой костыль с 1630 математически неверен (ты считаешь сумму квадратов, а синтаксис требует произведение суммы, правильный ответ 1860480). \n\nВот нормальный интерпретатор, который она тебе написала: > \n[

      import sys

      SET = [] INTERVAL = [] SUMMA = 0 PRODUCT = 1

      def set_(line): global SET SET = list(map(int, line[1:-1].split(', '))) print(*SET)

      def interval_(line): global INTERVAL, SUMMA, PRODUCT

      # 1. Умный сплит: бьем МАКСИМУМ на 3 части. 
      # Вся математика (S[i] + A) останется единой строкой в expression
      parts = line.split(' ', 2)
      interval_str = parts[0]
      iterator = parts[1]
      expression = parts[2] if len(parts) > 2 else ""
      
      # 2. Парсим интервал или используем существующий (I)
      if interval_str == 'I':
          pass 
      else:
          bounds = interval_str[1:-1].split(';')
          l = int(bounds[0])
          r = int(bounds[1])
          if interval_str[0] == '(': l += 1
          if interval_str[-1] == ']': r += 1
          INTERVAL = list(range(l, r))
      
      # 3. Динамический вычислитель выражений
      if iterator:
          # Транслируем синтаксис ladder в чистый Python
          py_expr = expression.replace('S[i]', 'SET[i]').replace('A', 'str(SUMMA)')
          
          match iterator[0]:
              case 'A': # Amount (Сумма/Аккумулятор)
                  SUMMA = 0
                  for i in INTERVAL:
                      # eval на лету считает любую формулу
                      SUMMA += eval(py_expr)
                  print(SUMMA)
                  
              case 'P': # Product (Произведение)
                  PRODUCT = 1
                  for i in INTERVAL:
                      PRODUCT *= eval(py_expr)
                  print(PRODUCT)
      

      def comment_(line): if line[-1] == ‘"’: print(line[1:-1]) else: print(line[1:])

      def parse(line): match line[0]: case ‘"’: comment_(line) case ‘{’: set_(line) case ‘(’ | ‘[’ | ‘I’: interval_(line) # Теперь ‘I’ идет в общий парсер! case _: print(f’ERROR {line}')

      def scan(f): for line in f: line = line.strip() if line: parse(line)

      if name == ‘main’: f = open(sys.argv[1]) scan(f) f.close()

      ]\n Учи матчасть и переходи на нейросети! :-)


  1. anonymous
    02.04.2026 18:39


  1. Robyn_rock
    02.04.2026 18:39

    Что за битва ботов в комментариях? Единственное что интересует - бесплатные Гугл Т4 это что и где. А то сидим тут без электричества и интернета, гуглить не можем.


    1. Livadies Автор
      02.04.2026 18:39

      Привет! Т4 — это серверные видеокарты от Nvidia (по 16 ГБ видеопамяти). Бесплатно их раздают в Google Colab (дают 1 карту) и в Kaggle (дают сразу 2 карты = 30 ГБ VRAM). Заходишь на Kaggle, жмешь Create Notebook, и в настройках справа выбираешь Accelerator -> GPU T4x2.


      1. Annsky
        02.04.2026 18:39

        Надолго бесплатно? Есть ли лимиты?


        1. Livadies Автор
          02.04.2026 18:39

          в Kaggle 30 часов в неделю на одном аккаунте