Техножнец
4.96K subscribers
1.45K photos
253 videos
12 files
642 links
Канал моих увлечений и поделок. Всё ,что я делаю и выкладываю здесь - делается с любовью.

Поддержать канал: https://tbank.ru/cf/8Xnajl01ehm

Поддержать канал: https://yoomoney.ru/fundraise/1C86E2DGIU9.250819
Download Telegram
Доброе "утро"...
🤝25👀11🫡6🥰2🕊1🦄1
Давно не общались...в общем, синтеты! Какие дела с RUKALLAMA V11?

Да...на самом деле всё окей! Повторы реально побеждены, т.к. на ранней стадии при температуре 0.3 модель уже уходить ОТ ЛЮБОЙ ПЕТЛИ! Результат = грандиозный в рамках этой модели.

Удалось достичь "АБСОЛЮТНОГО ОТСУТСТВИЯ" attention sink и других проблем в архитектуре.

Если хотите тех анализ, то вот подробнее:

Вчера показал как починил attention sink в V11 через удаление bias перед RoPE. Сегодня вернулся с полным отчётом probe на step 2800 (val 5.43). Потому что sink это была не единственная болезнь V9. Их было четыре.

Что болело в V9.

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

Attention sink. Четыре головы в последнем слое отдавали 25-40% внимания на первый токен независимо от контекста. Модель теряла последние десять сгенерированных слов, не видела повторения, срывалась в бесконечные петли.

Tanh saturation в .down слоях TrueKAN. От 52 до 90% размерностей залипали на значениях выше 0.99. Функция превращалась в константу, FFN выдавал одно и то же на любой вход.

Hidden norm inflation. Норма residual stream росла в 6.8 раз от слоя 0 к слою 23 (238 → 1606), со скачками на каждом MoE блоке. Градиенты взрывались, глубина становилась шумом.

MoE collapse. Эксперты умирали. Слой h.6 в V9 использовал два эксперта из четырёх в режиме 50-50, остальные два простаивали мёртвым грузом.


Что сделал в V11.

Четыре архитектурных правки. Каждая одной-двумя строками кода.

use_qk_bias=False в attention.py. Убрал bias из Q/K перед RoPE. Вращать константу перестали, паразитный позиционный член исчез математически. Attention sink устраняется на уровне архитектуры, не пост-фактум.

pretanh_norm_down=True в truekan/layer.py. Встроенный RMSNorm перед tanh в .down слоях с learnable pretanh_scale. Сигнал не уходит в зону насыщения.

hidden_clip_norm=1000 в block.py. Clip нормы residual после каждого блока. Инфляция физически невозможна.

MoE load_balance 0.01 → 0.05 плюс Gumbel noise 0.1 в gate во время тренировки. Auxiliary loss усилен в 5 раз, случайность ломает ранние жадные коллапсы. Эксперты не слипаются.

Probe V11 на step 3600, результаты.


Attention sink. Ноль голов из 384 (24 слоя × 16 голов) с avg выше 25% на pos 0. Максимальное значение avg во всей модели: L19 H14 = 0.21. Близко к порогу, но не sink. V9 в этой зоне имел четыре головы по 25-40%.

MoE. Все 32 эксперта живы:

h.0 E0:38% E1:26% E2:14% E3:21%
h.3 E0:37% E1:17% E2:32% E3:14%
h.6 E0:20% E1:16% E2:32% E3:33% ← V9 тут был 50-50 binary
h.9 E0:22% E1:26% E2:25% E3:26% ← почти идеальный баланс
h.12 E0:26% E1:28% E2:22% E3:24%
h.15 E0:29% E1:21% E2:25% E3:25%
h.18 E0:12% E1:33% E2:25% E3:30%
h.21 E0:25% E1:12% E2:32% E3:32%


Диапазон 12-38%, ещё ровнее чем на step 2800. Слои h.9 и h.12 вышли на почти идеальный баланс между четырьмя экспертами.
Pretanh_scale в 48 TrueKAN .down слоях. Все 48 значений в диапазоне [0.8878, 1.0678], среднее 0.981. Tanh работает в линейной зоне. V9 52-90% dims >0.99 исчезли.

Hidden norms. Range 791 → 1000, ratio 1.26x. Clip срезает раздутие начиная с L3. V9 имел 6.8x.

За тысячу шагов val упал на 0.28. Все четыре болезни остаются устранёнными. MoE распределение стало ровнее. Hidden norm стабильнее. Единственное изменение — максимальная avg голова подросла с 0.15 до 0.21, всё ещё в здоровом диапазоне.

Про генерацию.


На temp=0.3 пробный текст сейчас такой:

не государство, а государство, а государство — это государство.
— Ответ: В чём разница между государством?
— Ответ: В какой стране существует власть, а в какой стране они находятся?


Первое предложение петляет на одном слове. Но это не attention sink (probe это подтверждает) — это стилистический артефакт раннего трейна. После точки модель восстанавливается и ведёт псевдо-осмысленный диалог. V9 в подобной ситуации не восстанавливалась, срывалась в петлю до конца контекста!!!

Техножнец всё делает на свои средства. 🥶
Если есть желание поддержать его, то вот ссылки: 🫡

Поддержать канал:ТБАНК
Поддержать канал:ЮМАНИ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍82🕊1
Что это значит?

Большинство болячек 853M трансформера это не emergent проблемы, которые надо лечить пост-фактум костылями. Это прямые следствия неправильной архитектуры, которые убираются одной строкой если понимать механизм.

Но, Техножнец, тебе писали, что это костыли!! Тебе писали, что надо делать правильно изначально!!!

Так, я отвечал прямо - пока не убедимся на конкретных исследованиях со всех сторон в чём-то = делать выводы РАНО! Нужна эмпирика и только эмпирика, остальное это шум, который создан для самоуспокоения.

На V9 я две недели писал inference-патчи. Anticyclone. Defibrillator V1-V6. Attention Surgeon. SVD Truncation. Layer Skip. 19 методов. Ни один не сработал. Потому что нельзя починить на инференсе то что сломано в архитектуре.


Потрачено ли время зря? Конечно, НЕТ! Наоборот - я убедился для себя в очередной раз о схожести проблем и в конкретике и детерменированности проблемы. И то - у меня есть сомнения, что где-то ещё зарыта собака. Хотелось бы верить, что теперь всё будет окей.

Где находимся.

Step 3800 из 33733. 11.3% пройдено. Val 5.15. Кривая идёт вниз без плато. Следующая контрольная проба на step 5000, потом 10K и 20K. Если паттерн держится — V11 досидит до конца без сюрпризов.

Техножнец всё делает на свои средства. 🥶
Если есть желание поддержать его, то вот ссылки: 🫡

Поддержать канал: ТБАНК
Поддержать канал: ЮМАНИ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍242🕊1
📖 СЛОВАРЬ ТЕРМИНОВ К ПОСТУ ПРО V11

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

━━━━━━━━━━━━━━━━━━━━

🏷 ВЕРСИИ И БАЗОВЫЕ МЕТРИКИ

V9, V10, V11. Версии моей модели, как iPhone 14, 15, 16. V9 первая успешная — взяла первое место на русском бенчмарке, но петляла в генерации. V10 попытка починить, провалилась. V11 текущая версия, в которой болезни устранены.

Параметр, 853M. Число обучаемых чисел в модели. 853 миллиона параметров. Для сравнения: GPT-3 это 175 миллиардов (в 200 раз больше моей), ruGPT-3.5 это 13 миллиардов (в 15 раз больше моей). А я их всех обошёл на русском бенчмарке за $125.

$125. Столько стоила тренировка V9 в пересчёте на аренду GPU-часов. У меня своя A100, так что реально это электричество и амортизация, но в рыночных ценах это примерно $125. Для сравнения: тренировка GPT-3 оценивалась в несколько миллионов долларов.

Step (шаг). Один шаг тренировки. Модель получила порцию данных, посчитала ошибку, обновила веса чуть-чуть в сторону правильных ответов. Вся тренировка V11 это 33733 таких шагов. На каждом шаге модель немного умнеет.

Val (валидация), val_loss. Отдельный кусок текста который модель никогда не видела. Периодически её на нём проверяют, чтобы понять насколько хорошо обобщает, а не зазубрила. val_loss это число ошибки: чем меньше тем лучше. 5.43 хуже чем 3.49.

━━━━━━━━━━━━━━━━━━━━

🔬 ДИАГНОСТИКА

Probe. Буквально «зонд» или «проба». Диагностический скрипт, который я сам пишу чтобы заглянуть внутрь работающей модели. Как УЗИ для нейросети. Загоняю тестовый текст и смотрю не что она выдала на выходе, а что у неё в этот момент внутри: на какие токены смотрит каждая голова внимания, какие значения на слоях, куда течёт сигнал.

Token (токен). Кусочек текста с которым работает модель. Не всегда слово — обычно части слов. «Привет» может быть одним токеном, «выковыривать» тремя.

Epsilon / avg / max. avg — среднее значение по всем проходам probe. Голова «avg 0.15 на pos 0» отдаёт в среднем 15% внимания первому токену. max — максимальное значение за весь probe, эпизодическая вспышка. Avg показывает систематическую болезнь, max показывает эпизодические всплески которые для здоровой модели нормальны.

━━━━━━━━━━━━━━━━━━━━

🧠 ВНУТРЕННОСТИ ТРАНСФОРМЕРА

Attention (внимание), attention head (голова внимания). Механизм через который нейросеть решает на какие слова текста сейчас смотреть. У модели много таких голов (у меня 16 на слой), каждая специализируется: одна отслеживает кто кого упомянул, другая согласование родов, третья смысловую связь между далёкими фразами.

Q, K (Query, Key — запрос и ключ). Внутри attention каждый токен превращается в три вектора: Query (на что я хочу посмотреть), Key (что я из себя представляю для других), Value (что я передам если на меня посмотрят). Attention sink возникал именно в Q и K — поэтому use_qk_bias=False отключил bias только в этих двух проекциях.

Pos 0 (нулевая позиция). Первый токен в последовательности. Обычно служебный токен типа BOS (Begin Of Sequence). У него особое свойство в RoPE: самая медленная частота поворота, чуть-чуть «отличается» от всех остальных. Если в модели есть баг — он первым становится сборщиком залипшего внимания.

RoPE (Rotary Position Embedding — ротационное позиционное кодирование). Способ сказать модели где какое слово стоит в предложении. Работает через математический поворот векторов: первому слову нулевой угол, второму маленький, третьему побольше. Важное свойство: если правильно применить RoPE, модель понимает только относительное расстояние между словами, а не абсолютные позиции. Современный стандарт, используется во всех топовых моделях.

FFN (Feed-Forward Network, полносвязная сеть). Вторая половина каждого блока трансформера после attention. Attention решает «на что смотреть», FFN решает «что с этим делать». Простая сеть из двух линейных слоёв с нелинейностью посередине. У меня нелинейность это tanh плюс Чебышевские базисы — это и есть TrueKAN.
127👍5👏4🔥1🕊1
TrueKAN (Kolmogorov-Arnold Network). Архитектурная альтернатива обычным нейросетям, построенная на теореме Колмогорова-Арнольда о представлении функций. Вместо фиксированных активаций учит сами активации, раскладывая их по базисам. В моём варианте базисы это полиномы Чебышева. Тема свежая, 2024-2025 год.

.down слой. Внутри FFN две линейные операции: .up расширяет размерность сигнала (например с 1024 до 4096), .down сжимает обратно (с 4096 до 1024). В моём коде проблема была именно в .down части TrueKAN, где сигнал перед сжатием проходил через tanh и насыщался.

Dimensions (размерности). Каждый скрытый сигнал в модели это вектор из чисел. У меня длиной 1024 числа. «52-90% размерностей залипали» = из этих 1024 чисел 500-900 всегда оказывались равны почти единице, то есть вели себя как константа а не как осмысленный сигнал.

Hidden state (скрытое состояние). Внутренний сигнал который течёт от слоя к слою. На входе закодированный текст, дальше каждый слой что-то с ним делает, на выходе предсказание следующего слова. Hidden state norm это длина этого вектора — насколько он большой численно.

Residual stream (остаточный поток). Главная магистраль сигнала в трансформере. Каждый слой не заменяет предыдущее состояние, а добавляет к нему свой вклад. Как накопительный счёт: кладёшь понемногу с каждого слоя, к концу модели там итоговая информация. Норма residual stream должна расти умеренно. У меня в V9 раздувалась в 7 раз.

━━━━━━━━━━━━━━━━━━━━

⚠️ ПАТОЛОГИИ

Attention sink (сток внимания). Патологическое поведение, когда механизм внимания залипает на одном токене (обычно первом) и смотрит туда всегда, независимо от контекста. Модель как бы «сливает» своё внимание в один угол откуда оно уже не возвращается. Из-за этого она перестаёт видеть остальной текст нормально.

Saturation (насыщение). Когда функция упирается в свой предел и перестаёт различать разницу во входе. Как передержанная фотография, где белое стало просто белым и деталей уже не видать. Tanh saturation в моей модели убивал FFN: функция становилась константой, слой выдавал одно и то же независимо от входа.

Tanh (гиперболический тангенс). Математическая функция которая любое число сжимает в диапазон от минус единицы до плюс единицы. Форма похожа на растянутую букву S. Проблема: если подать слишком большое число, tanh почти упирается в единицу и перестаёт чувствовать разницу между 5 и 50. Это и есть saturation.

Norm inflation (раздувание нормы). Когда длина сигнала растёт от слоя к слою бесконтрольно. К последним слоям сигнал становится настолько большим численно, что мелкие осмысленные колебания тонут в нём. Градиенты при этом тоже взрываются, обучение ломается.

Gradient (градиент). Направление в котором надо подвинуть параметры модели чтобы ошибка уменьшилась. На каждом шаге тренировки считают градиенты, параметры сдвигаются чуть-чуть по ним. Если градиенты становятся слишком большими («взрываются»), сдвиги получаются бешеные и модель расколбашивает.

━━━━━━━━━━━━━━━━━━━━

🛠 МЕТОДЫ ЛЕЧЕНИЯ

Bias (смещение). Маленькая константа, которую добавляют в нейросети к вычислениям чтобы дать модели дополнительный параметр для настройки. В большинстве мест оно полезно. В конкретном случае в моём attention перед RoPE оказалось вредным.

RMSNorm (Root Mean Square Normalization). Процедура которая приводит длину вектора к стандартному размеру без изменения направления. Как если бы взял стрелку и нормировал её до единичной длины, оставив направление. Ставят перед активациями и слоями чтобы сигнал не раздувался и не сжимался непредсказуемо.

Learnable parameter (обучаемый параметр). Число в модели, которое изначально случайное, но во время тренировки подстраивается градиентным спуском под задачу. pretanh_scale у меня это 48 таких чисел, по одному на каждый .down слой. Они учатся сами подбирать масштаб сигнала перед tanh чтобы не уходил в saturation.
👍15🔥72🕊1
Clip, clipping (обрезка). Операция «если число больше порога — сделай его равным порогу, иначе оставь как есть». hidden_clip_norm=1000 значит: длина residual stream не может быть больше 1000, если пытается — режем. Грубый но эффективный способ предотвратить инфляцию.

━━━━━━━━━━━━━━━━━━━━

🏭 MoE (СМЕСЬ ЭКСПЕРТОВ)

MoE (Mixture of Experts). Архитектура в которой вместо одного большого FFN стоит несколько маленьких (у меня четыре на каждый MoE слой), и специальный маршрутизатор (gate) для каждого токена выбирает кого задействовать. Идея: разные эксперты специализируются на разных типах данных, модель эффективнее использует свои параметры.

Expert (эксперт). Один из подмодулей MoE слоя. Маленькая отдельная сеть, которая обрабатывает только часть токенов, направленных к ней маршрутизатором. У меня 4 эксперта на слой, 8 слоёв используют MoE — итого 32 эксперта в модели.

Dead expert (мёртвый эксперт). Эксперт к которому маршрутизатор перестал отправлять токены. Получает нулевую нагрузку, не обучается, висит мёртвым грузом параметров. Классическая болезнь MoE: возникает когда во время тренировки рано образуется «любимчик» куда всё валится, а остальные атрофируются.

MoE collapse (коллапс). Когда несколько экспертов умирают и модель по факту использует лишь часть заявленных. Вместо 4 работают 2, или 1. Теряется весь смысл MoE архитектуры.

Load balance / load balancing loss (балансировочная функция). Дополнительная штрафная функция во время тренировки, которая наказывает модель если она грузит экспертов неравномерно. У меня было 0.01 (слабый штраф), увеличил до 0.05 (в 5 раз сильнее). Теперь модель активно стремится нагружать всех поровну.

Auxiliary loss (вспомогательная функция потерь). Это и есть load balancing loss в контексте MoE, другое название. Основная функция потерь считает насколько правильно модель предсказывает следующее слово. Вспомогательная добавляет к ней штраф за дисбаланс экспертов.

Gate (гейт, маршрутизатор). Маленькая сеть внутри MoE слоя которая для каждого токена решает к какому эксперту его отправить. Смотрит на токен, выдаёт вероятности для каждого эксперта, выбирает самого вероятного.

Gumbel noise (шум Гумбеля). Особый вид случайности который добавляют в gate во время тренировки. Эффект: gate не всегда выбирает самого сильного эксперта, иногда случайно отправляет токен к более слабому. Это мешает раннему «жадному коллапсу» где один эксперт захватывает всё, и даёт всем экспертам шансы получить сигнал в начале обучения.

━━━━━━━━━━━━━━━━━━━━

🎛 ГЕНЕРАЦИЯ И ИСПОЛЬЗОВАНИЕ

Inference (вывод, работа модели после тренировки). Когда модель уже обучена и просто используется: принимает запрос, выдаёт ответ. В противоположность training (тренировке). «Inference-патчи» это попытки починить модель постфактум, во время её работы, не меняя архитектуру и не переобучая.

Temperature, `temp=0.3` (температура). Параметр генерации текста. Когда модель выбирает следующий токен у неё есть вероятности всех вариантов. Температура это ручка: низкая (`0.1–0.3`) — всегда самое вероятное, детерминировано, но залипает на шаблонах. Высокая (`0.8–1.2`) — больше случайности, креативнее, но может нести пургу. `temp=0.3` это «слегка разнообразно, но консервативно».

Emergent phenomenon (эмерджентное явление). Свойство которое возникает как бы само собой в больших нейросетях, не закладывалось специально. В литературе attention sink часто называют emergent. Я утверждаю что нет — он не emergent, а архитектурно вынужденный через кривой порядок операций.

━━━━━━━━━━━━━━━━━━━━

💻 ЖЕЛЕЗО И ПРОЦЕСС

A100. Видеокарта Nvidia для машинного обучения, одна из самых популярных для тренировки моделей. Стоит в районе $10,000–15,000. У меня она одна, на ней тренируются все мои модели.

Speed, `7359 tok/s` (скорость, токенов в секунду). Сколько токенов модель обрабатывает за секунду на тренировке. Показатель эффективности кода на конкретном железе. Для 853M модели с MoE и KAN на A100 это нормально — не выдающееся но и не медленное.
👍164🕊1
PID (Process ID, идентификатор процесса). Номер процесса в операционной системе Linux. «PID 52935 живой» означает что процесс тренировки не упал и не завис, продолжает работать. Проверка что серверная работа за ночь не сломалась.

━━━━━━━━━━━━━━━━━━━━

🏛 ОРИЕНТИРЫ В ИНДУСТРИИ

Llama, Mistral. Две самые известные открытые серии больших языковых моделей: от Meta и от французской компании Mistral AI соответственно. Индустриальный стандарт архитектуры. Если какая-то деталь «как в Llama» — значит проверенная годами работа.

Open-source. Открытый исходный код. Модель которую любой может скачать, посмотреть, использовать. В противоположность закрытым моделям типа GPT-4, Claude или Gemini, где ты можешь только отправлять запросы через API.

Architectural vs post-factum (архитектурный vs пост-фактум). Architectural fix = починка в самом строении модели, требует переобучения. Post-factum fix = попытка залепить проблему уже обученной модели через модификации inference, без переобучения. Мой вывод поста: post-factum костыли не работают на архитектурных багах.

━━━━━━━━━━━━━━━━━━━━
👍161🕊1
Синтеты, это для своих.

Этот пост специально для тех кто активно занимается подобными исследованиями, и для тех кто никогда подобным не занимался. Для тех кто хочет двигаться дальше чем просто "работка с модельками". Дальше чем файнтюны на готовых стеках. Тех кто хочет делать красиво - исходя из более низких абстракций, с понимания как это устроено изнутри.

━━━━━━━━━━━━━━━━━━━━

📓 Здесь я веду свой журнал как Техножнец.

Исключительно из любви к этой работе и подобным исследованиям. Да, со стороны для спеца ультра-уровня это может выглядеть как мазохизм. Но только в ограниченных условиях и выстрадано когда своими силами - появляется понимание ценности того, что пройдено.

Надутая гордость не имеет места на фоне такой тяжёлой работы. Сил остаётся лишь на анализ и взаимодействие с самым ценным вокруг - с людьми.

━━━━━━━━━━━━━━━━━━━━

💸 Бабки, бабки.

Грязная зелёная бумажка, призванная всего лишь обслуживать нас - а по факту управляет. Люди откидывают когнитивные рамки потребления сообществ ради своих целей. Убирают денежные рамки - и тут же вставляют туда ту же самую консюмерскую логику. Поэтому и теряются в океане лжи, непонимания и отсутствия рефлексии.

━━━━━━━━━━━━━━━━━━━━

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

Это должен быть безбрежный океан. Планета рефлексии. Где ты в первую очередь анализируешь свои шаги.

━━━━━━━━━━━━━━━━━━━━

🧠 Сообщество призвано обогатить мозг, заставить его шевелиться.

Я обогащаю прежде всего свой мозг - начни с себя, всегда. Но мне не стрёмно делиться с вами. Всё что я прохожу через @technojnec - это открытый журнал. И пусть он таким остаётся.

━━━━━━━━━━━━━━━━━━━━

Техножнец всё делает на свои средства. 🥶
Если есть желание поддержать его, то вот ссылки: 🫡

Поддержать канал: ТБАНК
Поддержать канал: ЮМАНИ
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤‍🔥26👍953👌1🕊1🤝1🤗1
👍26🕊1
Это лишь часть весов ⚖️. Сейчас будет чистка 🧹. Каждый раз ощущение, что удаляю нечто...полуживое... ох уж эти когнитивные искажения 🧠.
👍16👻3👨‍💻22🕊1
Opencraft - обновление.

Процедурный мир!

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

Делаю дальше. Потом видосик покажу со звуками уже.
👍29🔥5🕊1🦄1
Синтеты, у меня к вам важное сообщение.

Готовы ли вы, получив задание в определённом чате, потратить собственные средства и время на создание качественных и необходимых датасетов для сегмента больших языковых моделей (LLM) в России?

Моя идея в объединении синтетов, кто хочет участвовать в общий чат и создании единого репозитория, который будет пополняться значительным объёмом датасетов. Запланировано использование лучших английских датасетов по следующим направлениям: инструкции, написание кода, математика, научные данные, а также специализированные темы, не освоенные в отечественной практике.

Данные будут грамотно, точно и на высоком уровне переведены на русский язык с помощью настроенного фреймворка LLM.


Такие вещи должны как-то хоститься. А значит это, что часть участников сможет использовать собственное оборудование, другие — подписку на Google Colab и будут вручную следить ( у кого на что хватит спецификации).

Кнопки "сделать красиво" не будет. Тут нужны люди, которые непосредственно разбираются в теме.
Репозиторий будет открытым для всех - стараться будем для сообщества и , вообще, для социума.

При получении достаточного количества подтверждений от активных синтетов будет создан чат, и всем ответившим будет предоставлена ссылка в личку от Техножнеца. Будущее развития датасетов в России планируется решать самостоятельно.

Лично я заебался ждать
1🔥62👍104🤔4🕊1
🫡20👍8🔥6🕊1
Доброе "утро"...
🤝9🫡2
Мы с Claude дизайнеры...лол.

На самом деле пробую кое-что интересное и создаю клёвы скиллзы ему.
👍18🕊1
Сегодня добавлю в чат участников, там будут разделы. Все, кто отписался - поговорим с вами лично.
👏12🕊1
щас кое что буду выкладывать, поджигая жопы, а некоторых очень радуя. комьюнити начнётся здесь...это будет Github проект, который многие ждут...много раз писал об этом. как думаете, что это?
👍185🕊11
Квоты ИИШКИ , наконец-то, пополнены.

Жду наплыва маркетолог советчиков 😃 (с совершеннолетним стажем)
👍27🕊1
Прогрев происходит лютейший...
👏28🔥13🦄2👍1🕊1