Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Пылесосим таблицы в Greenplum

Замечали ли вы когда-нибудь, что ваша таблица выросла с 10 ГБ до 30 ГБ, но при этом количество строк увеличилось всего на 20%? Или ещё хуже, после массового удаления половины данных таблица как занимала 100 ГБ, так и продолжает занимать?
Если знакомо, то добро пожаловать в мир «призрачных» строк и раздувшихся таблиц.

В чём суть проблемы?

Из-за MVCC (многоверсионного управления параллелизмом) при UPDATE и DELETE старые версии строк физически не удаляются, а помечаются как «мёртвые». Со временем таблицы раздуваются, производительность падает. Чтобы это исправить, обращаемся к VACUUM.

🟣VACUUM - это SQL-команда для «сборки мусора», унаследованная Greenplum от PostgreSQL. Она освобождает место, занимаемое удалёнными или устаревшими строками. Есть два основных типа вакуумирования:

➡️ VACUUM (обычный): просто освобождает занятое место для повторного использования, работает быстро, может выполняться параллельно с другими операциями.
➡️ VACUUM FULL: полностью переписывает таблицу, реально удаляя мусор и уменьшая физический размер файла таблицы, но требует эксклюзивного доступа и работает заметно дольше.

◀️Как запустить VACUUM
-- Обычная очистка (без блокировки)
VACUUM my_table;

-- Полная очистка (с блокировкой, возвращает место ОС)
VACUUM FULL my_table;

-- С обновлением статистики
VACUUM ANALYZE my_table;


Ключевые особенности:
⭐️Выполняется параллельно на всех сегментах кластера
⭐️Обычный VACUUM не блокирует таблицу
⭐️VACUUM FULL блокирует и физически перезаписывает файлы
⭐️Не работает с external/foreign таблицами
⭐️Для таблиц append-only необходимо свободное место на диске ≥ размера самого большого сегмента

Когда запускать VACUUM
🟣После массовых DELETE/UPDATE операций
🟣Для таблиц с высокой частотой изменений
🟣Регулярно для системных каталогов
🟣После значительных изменений данных (для обновления статистики)

Избегать:
🟣VACUUM FULL в пиковые часы
🟣Частое использование VACUUM FULL (только в критических случаях)
🟣Запуск на огромных таблицах без окна обслуживания

▪️ Важно: VACUUM FULL требует двойного объёма свободного места, так как создаёт полную копию таблицы. Альтернативное решение: удалить старую таблицу и заново создать ее.

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


Что в итоге?

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

➡️Читать подробнее: Сборка мусора и очистка таблиц в Greenplum с командой VACUUM

©️ что-то на инженерном
Please open Telegram to view this post
VIEW IN TELEGRAM
Снимок экрана 2025-07-25 в 16.38.01.png
454.8 KB
Делаем бесплатный курс по vscode?

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

Тем более видосы с нарезкой моего подкаста на данную тему с @t0digital собрали много обсуждений и даже возмущений. А значит – тема горячая :)

Будем делать из второй картинки третью.

О чем поговорим?
- Почему DX важен?
- Почему vscode, а не vim / pycharm / emacs / тд. И как применить такие же подходы к другим средам
- О минимализме. Для успешной работы вам нужно меньше инструментов, а не больше
- О том, как сделать минимальное количество полезных горячих клавиш, которыми вы реально будете пользоваться
- Как навигироваться по коду, файлам, важным местам в проекте
- Какие принципы позволят вам сделать свой уникальный рабочий сетап, который удобен вам
- Как можно делать свои крутые инструменты, как пример для работы со сложными кейсами в git: https://github.com/sobolevn/fzf-simple-git
- Как писать свои темы, плагины. И когда их не писать

Будет крайне полезно, чтобы писать код быстрее и проще.

Мои конфиги за ~10 лет работы всегда можно посмотреть тут: https://github.com/sobolevn/dotfiles

Собираем донат goal на +16 человек – и начинаем! Все будет бесплатно и на ютюбе. Подписка на https://boosty.to/sobolevn стартует со 100 рублей.

Холивар про IDE объявляется открытым в комментах 🌚
Forwarded from Sergey Kuznetsov
Roocode Cline Killo Code, Proxyai
Предыдущее тут
3/5 пост =)

Среда-Четверг, 10+11=21ч
Был получен минимальный рабочий сценарий с файлами. Весь день посвящён структурированию бэка, разделению логики web бэкенда и аналитического бэкенда на разные сервисы, devops активностям, закладыванию моделей БД. Затянуты Mongo - основная БД, Minio - локальный S3 и Redis как БД коммуникации и шеринга состояний между сервисами

Моей ошибкой, унёсшей ~4 часа времени стала попытка сделать по-быстрому локальное хранилище вместо S3. ИИ запутался в папках и роутинг раздачи файликов не взлетел.
Нужно было сразу брать minio и на лету перепиливать S3 на S3 по сути. Пришлось отбросить/вырезать некоторое количество кода. Слава Git

Переработал LLM суммаризацию. Основная работа заключалась в вынесении конфига и ограждению курсора от попыток сменить схему SO с рабочей на нерабочую. В исходной кодбазе с неё всё было хорошо

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

Инсайты
- ИИ имеет свойство плодить кривые конфиги в разных местах. Это должно подвергаться контролю за счёт Rules, темплейтов проекта

- Нельзя вайбкодить сложную задачу. (вайбкод - не вдумываясь принимать изменения ИИ). С каждой следующей итерацией и уточнением, особенно если что-то не получается, ИИ заходит всё дальше в дебри и пишет всё более локальноориентированный структурно хреновый код
И это как будто бы базовое правило coding with AI. Ты должен вмешаться, проанализировать и выбрать корректный подход прежде чем ИИ затронет слишком многое. Возможно принять решение запустить всё с самого начала.

- Генеративный подход - когда создаёшь новый код над старым, в разы менее затратен с ИИ чем обратный, где нужно рефакторить/убирать излишки старого. Для меня, как человека, проще работать с существующим на изученной кодбазе

- ИИ затрагивает широкий набор изменений в рамках своей работы, часто работаешь над 2-3 параллельными задачами/направлениями изменений. Это осложняет классическую историю ведения гита. Очень важно регулярно уделять внимание регрессу и делать отсечки, которые пойдут коммитом в гит.
В курсоре можно откатываться на чекпоинты чатиков, но это не всегда работает и неудобно.
Уверенность, что я могу надёжно откатиться на рабочую версию - залог спокойной работы

Как итог, считаю, что мастхэв должен быть шаблон проекта, адаптированный под ИИ, где уже организована и тщательно описана желаемая организация проекта:
* Конфиги и их место
* Лучшие практики инфры вплоть до шаблонов докеров,
* Заложены примеры привычных схем, ролей, моделей.
* Подключены на уровне низкоуровневых адаптеров человекописные базовые внешние модули типа БД, web-сессий, сокетов и т.д.
* Продумана и заложена механика проброса зависимостей и централизованной инициализации модулей.
* Оно позволяет вносить изменения уже отсраиваясь от лучших практик, более точечно

ИИ склонен тупо херачить глобальные объекты и начинает творить лютую дичь как только ловит от этого сложности


На конец четверга, четвёртый физический день работы, уже проходили все базовые сценарии проекта, завязанные непосредственно на ЛК и обработку звуковых файлов. UI принял околофинальные очертания, вырисовалась более стройная организация и инфраструктурная обвязка. Проект билдился в докер и запускался на сервере
4/5 пост, дальше только выводы
предыдущее

Пятница, 12ч
Realtime транскрипт, правки, сущности, баги, рефакторинг

Я надеялся в пятницу уже получить полностью рабочую сборку, но оставалось слишком много дел по работе системы, google extension ещё и не был начат.
Зафиксировал опоздание в день.

По привычке закопался в алгоритм и протокол realtime транскрибации - как копить буфер, корректировать транскрипт на лету. Закопаться нормально при классической разработке, но непозволительно в условиях интенсива. Стало ещё одной моей крупной ошибкой, стоившей 6 часов. Но хотя бы отловил пару проблем в процессе.

Инсайты
- На примере realtime протокола, ИИ не может алгоритмический код без очень точного описания.
Напутать индексацию пакета, поставить условие сброса кэша туда, куда его ставить НЕЛЬЗЯ, забыть, как используются счётчики. Ещё засунуть открытый сокет в хранилище сокетов сессий и получить обсёр в моменте, когда фронт отсоединяется первым от "активной" сессии... Напомню, что чем больше ты его поправляешь тем хуже становится код.
По итогу всю эту часть я делал ручками. Вдумчиво и внимательно.

- ИИ в общем случае очень плохо пишет схемы данных без очень конкретного аналитического описания. Легче продумать самому, а ИИ уже отдать на интеграцию.
Это в целом хорошая гигиеническая практика - Писать HLD и примерную схему данных до начала разработки.


Суббота, 8 часов
Гугл расширение, минификсы и завершение этапа проекта

Абсолютно новый для меня зверь. Без ИИ я такое расширение написать физически бы не смог. Поработал скорее как аналитик - где в первую очередь нужно описать и донести, что ты хочешь, подсобрать ожидания и хотелки хотя бы у себя в голове.

Так как осталось время, запилил допфичу по шерингу транскриптов наподобии гугл доков.
ИИ умудрился сломаться на несложном расширении модели БД, но с полпинка починился и адекватно написал миграцию.

Инсайты
- Структурированное МиниТЗ с просьбой составить план изменения, а потом ему следовать - хороший способ брать в выполнение сложные фичи

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

- Эмодзи в логах это на удивление прекрасно, если их не становится слишком много. Надо взять себе в боевые практики. С визуально-цветовыми ассоциациями проще выхватывать нужные моменты в общем потоке


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

П.с. извиняюсь за качество демок. Изначально они предназначались для околорабочих чатиков. NDAшу как могу.
Forwarded from Dealer.AI
Гибридизируй это - память.

Как я и говорил гибридизация механизмов памяти это будущее. Теперь уже и настоящее.

Подобно memGPT (про память, а не мемы 😀 ), коллеги из Китая пошли в операционку с памятью. Очень интересная работа.

https://t.me/chinaaichannel/167

+ выкладываю свою презу по памяти для LLM на datafest (будет ниже).

Видео залиты сами знаете куда. Мое выступление с 1:33:00 примерно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dealer.AI
Reinforcement Pretraining Learning от Microsoft - новый взгляд на предобучение.

RPT - это новый подход для дообучение моделей на основе рассуждений с RL.

Как это работает? 💡
Ранее, мы использовали старую схему: предобучение, инструктивный тюнинг и выравнивание. Далее DeepSeek привнёс дополнительно методологию предобучения+RL тюнинга, без итерации SFT.
Однако, Microsoft пошли дальше. Мы делаем предобучение модели с задачей next token prediction, а далее делаем дополнительный шаг к дообучению (допредобучению) с использованием формата рассуждений для предсказания следующего токена. Да, да, с использованием спец.форматов thinking tokens и т.п. (ниже будет скрин формата). При этом, откуда взялся RL тут? Да все просто – ввиду моды на GRPO и задач, которые сами порождают себе награду, из-за своего известного ответа. Ведь для задач предсказания токена мы уже также имеем нужную разметку. Поясню, у нас есть тренировочный опорный текст, его мы нарезаем на контекст + следующий токен, так мы делаем teacher forcing. Отсюда награду на этапе RPT будем давать за правильно предсказанный токен с GRPO, а не юзать CCE loss. Кстати, очень похоже на подходик с RTD (replaced token detection) для обучения ELECTRA, помните такую?

Вот и вся идея: берем претрейн+rpt, далее уже че хотим, то и воротим. Можно следом сделать RL SFT, и авторы этот эксперимент проводят и показывают, что такой RPT "отжиг" (почему-то с ним аналогия, хотя у отжига есть условие соблюдения чистоты и частоты разметки к претрен сырцу), естественно, улучшает качество тюна дальнейшего с RL. Все логично, мы же уже подготовили почву через обучение сродственное.

Отсюда вообще много чего, интересного можно натворить. Взять и сделать реально аналог отжига, но на RPT подходе, прям по всем правилам и требованиям к датке, но с функцией цели в виде GRPO. Можно генерить разметку претрен сета в виде рассуждений при помощи reasoning моделек, создавая уже RPT синту. Далее пойти в DeepSeek R1 пайп. Написать сначала людьми разметку под токены рассуждений, потом обучить опорную свою RPT модельку, ее использовать для рефайна сета претрен. Получив синту с нужной разметкой, отобрать ту синту, для которой энтропия/перплексия минимальная (отобрать лучшие примеры), и вкинуть уже в модель второго уровня на пайплайн: претрен, rpt с синтой, rl sft и т. д.  по аналогии с R1 пайпом после ZeroStage.

Кстати, авторы показали не только хорошую интеграцию с RL sft, но и правила скейлинга качества для разного уровня сложности задач на рассуждения, на примере задач математики. Туда же долили замеры QA и MMLU и тоже показали ап. 🌿
К тому же, 14b моделька Qwen с RPT заняла место между NTP 14b и 32b. 📈

В общем, читайте статью и пробуйте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dealer.AI
Manus: "Agents and in-context learning is all you need for it."

Пристально слежу за развитием цыганских агентов от Мануш (на самом деле Манус 😂). И в их блоге, недавно, отсыпало весьма классный пост про опыт и видение настоящего и будущего работы с агентами. А именно, в статье команда авторов делится хаками для интеракций агентов.

У команды был долгий опыт с NLP и связанные с этим дилеммы для проекта Manus: учить ли свои модели или использовать всю мощь in-context инженерии. Ввиду большого time to market для задач, связанных с тюном моделей, их выбор пал на гибкое, быстрое и масштабируемое решение в виде своей адаптации in-context learning для агентов.
Мне очень импонирует, что эти ребята делают свою агентную систему круче OpenAI, при этом, основываясь, на уже казалось бы затертых до дыр, концептах function calling и rag/in-context learning (engineering как они сами это зовут) + LLMs, разумеется.

Основные столпы их механизмов взаимодействия агентов:

1. Грамотное использование KV-cachig. Как для экономии финансов, так и для быстрого контекстуального ответа.

2. При этом рассматриваются важные аспекты, как не сломать кэширование при масштабировании функций и инструментов, доступных агентам. Ведь новые фичи, как команды и результаты их исполнения, будут попадать в контекст, который они заполняют по определенной стратегии. Поэтому, чтобы не пришлось пересчитывать кэш и не ломать его логику, используется маскирование аля как в constrained output, четкий словарь префиксов, а также пополнение контекста в конце. Еще предупреждают – не стоит вкидывать или удалять новые операции/функции в середину итерации, только после завершения экшена.

3. Приятно, что тут же упомянули, механизмы вызова или добавления функций в виде RAG-механик с description функции, которые аттендятся на контекст. Обычно, это делается через матчинг эмбеддером векторов состояний контекста с описанием действия (функции).
Но учить такой FunctionRanker придется отдельно и ожидать трансфер знаний на лету. Кстати на нашем опыте FRIDA и e5, bge-m3 отлично в zeroshot с этим справляются без дообучения, а с ним и подавно метрики @K летят к 0.99.

4. Использование файловой системы, как памяти. Мое любимое - про память. Авторы предлагают гениально простой способ хранения информации без переполнения локального контекста - в файлах. Кстати, вы можете заметить подобное хранение в памяти от OpenAI. Это позволяет не перегружать контекст LLM, обращаясь только за нужной информацией во вне и сохраняя тоже только нужное, вырезая из контекста, все, что можно положить в файл. При этом, агент сам запишет, куда и в какой файл, что он сохранил.
Тут же, создатель Мануш говорит об ограничениях моделей SSM, которым не хватает внимания ввиду сродства с RNN/LSTM и происходит затухание памяти на длинных контекстах. Именно гибридизация агентов на базе моделей SSM с памятью на file system может породить новый аналог нейронной машины Тьюринга.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dealer.AI
Manus: "Agents and incontext learning is all you need for it."

Продолжение.

5. Декламация/акцентуация внимания агентов и «lost in the middle». Тут все просто, т.к. основной актор это LLM внутри агентов, то мы наследуем проблемы затухания/размывания внимания. Это происходит из-за того, что агенты совершают несколько десятков действий (50 в случае Манус), которые пишутся в контекст. Чтобы фокус не сбивался, агенты этой системы ведут todo.md, куда пишут план и пометки о его выполнении. Этот чек-лист помещается в конец контекста, для сохранения акцентов на цели. А мы помним, last tokens модели с casual mask "помнят/видят" лучше, чем инфо в самом начале.

6. Сохраняйте ошибки. Кстати, в наших работах с памятью - это работает плохо, но тут есть важный нюанс. Ввиду того, что есть трассировки ошибок, и результаты неверного выполнения логируются, вызывая отличные действия, это помогает в контексте модели видеть верный и неверный путь, отодвигая внимание от последнего. Надо записать для себя. Если бы трассировок не было, то конечно неверные экшны ломали бы контекст, как в нашем случае.

Еще очень важный пойнт авторов тут: "восстановление после ошибки — один из самых явных признаков настоящего агентного поведения." Создатели бенчмарков для агентов, задумайтесь!

7. Бойтесь обыденности. Под этим имеется ввиду, не злоупотребляйте few-shot подсказками или промптами. Повторяющиеся шаблоны "запрос-действие" создают рамки, которые могут быть неоптимальными – вызывать зацикливания или даже галлюцинации. Для того, чтобы избежать такого, авторы вносят шум, перестановки слов и разнообразие в формулировки, через специальные инструкции к агентам (возможно, в тч на уровне систем промптов). Таким образом, в лог контекста попадают парафразы, а не синонимы.

Фух, вроде все. Очень интересный мануал-откровение. Читаем подробно сами и перенимаем для своих агентных систем. Хороших выходных.🙏
Please open Telegram to view this post
VIEW IN TELEGRAM