Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🐬 Dolphin — превращает PDF в структурированные данные
Dolphin (Document Image Parsing via Heterogeneous Anchor Prompting) — 100% open source-модель для автоматического разбора PDF и сканов.
Зачем нужен:
— Конвертирует документы в готовые форматы: Markdown, HTML, LaTeX, JSON.
— Извлекает текст, таблицы, формулы и изображения.
— Полезен как для подготовки данных для LLM, так и для любых автоматизированных систем, архивов, поиска и аналитики.
Как работает:
1️⃣ Анализ макета страницы — определяет все элементы в естественном порядке чтения.
2️⃣ Параллельный парсинг — с «якорями» и промптами под каждый тип контента.
💡 Лёгкая архитектура + параллельная обработка = высокая скорость без потери качества.
🔗 Репозиторий с кодом и моделями: https://clc.to/6gPIwA
Библиотека дата-сайентиста #буст
Dolphin (Document Image Parsing via Heterogeneous Anchor Prompting) — 100% open source-модель для автоматического разбора PDF и сканов.
Зачем нужен:
— Конвертирует документы в готовые форматы: Markdown, HTML, LaTeX, JSON.
— Извлекает текст, таблицы, формулы и изображения.
— Полезен как для подготовки данных для LLM, так и для любых автоматизированных систем, архивов, поиска и аналитики.
Как работает:
Представьте, что у вас есть 500 отчётов в PDF с финансовыми таблицами и графиками. Dolphin превращает их в аккуратный CSV или JSON, готовый для анализа в Pandas или загрузки в базу данных — без ручного копипаста и правок.
💡 Лёгкая архитектура + параллельная обработка = высокая скорость без потери качества.
Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
#open_source
#myproject@dm_projects_log
Новая утилита: file_size_sorter.py — скрипт анализа дискового пространства.
Изначально написал для того, чтобы проверить почему репозиторий так много весит. Нашел запушенные артефакты, так что полезное. Ещё эта штуковина полезная в целом для анализа диска, когда его нужно почистить.
Скрипт использует только стандартную библиотеку Python, так что зависимостей нет.
Примеры использования:
#myproject@dm_projects_log
Новая утилита: file_size_sorter.py — скрипт анализа дискового пространства.
Изначально написал для того, чтобы проверить почему репозиторий так много весит. Нашел запушенные артефакты, так что полезное. Ещё эта штуковина полезная в целом для анализа диска, когда его нужно почистить.
Скрипт использует только стандартную библиотеку Python, так что зависимостей нет.
Примеры использования:
# Найти 10 самых больших файлов в домашней директории
python file_size_sorter.py /home/user 10
# Посмотреть все файлы проекта, отсортированные по размеру
python file_size_sorter.py ./my_project
# Найти самые маленькие файлы (полезно для очистки мелкого мусора)
python file_size_sorter.py /tmp 20 --asc
GitHub
miniutils/files/file_size_sorter.py at main · Dmatryus/miniutils
A set of small scripts for simple tasks. Contribute to Dmatryus/miniutils development by creating an account on GitHub.
#open_source
#myproject@dm_projects_log
Добавил в утилки крутую фичу, которую давно хотел замутить. Честно говоря, оно не особо тянет на миниутилку, так как кода там довольно много и логика не простая, но пока так, ибо мне не охота мутить отдельное приложение, но может быть, когда-нибудь...
Кстати, сам конвертер занимает всего один файл, но при этом умеет больше, чем многие платные сервисы!
✨ Что умеет новый модуль?
📝 Markdown → HTML/PDF за одну команду
🎨 4 встроенные темы (включая тёмную!)
🌈 50+ стилей подсветки кода
📊 Mermaid диаграммы прямо в документах
⚡️ Работает офлайн или через API
🎯 Для кого это?
• Пишете документацию? Теперь она будет красивой!
• Ведёте техблог? Конвертируйте посты в PDF
• Делаете презентации? Mermaid диаграммы включены!
• Учитесь/учите? Идеально для конспектов с кодом
💡 Простой пример
Если честно, то я не проводил обширного тестирования и проблемы все ещё могут быть, но в ходе разработки решил кучу проблемных ситуаций. Если что-то пойдет не так, можете писать мне в личку или сюда в директ.
GitHub: https://github.com/Dmatryus/miniutils/tree/main
#myproject@dm_projects_log
Добавил в утилки крутую фичу, которую давно хотел замутить. Честно говоря, оно не особо тянет на миниутилку, так как кода там довольно много и логика не простая, но пока так, ибо мне не охота мутить отдельное приложение, но может быть, когда-нибудь...
Кстати, сам конвертер занимает всего один файл, но при этом умеет больше, чем многие платные сервисы!
✨ Что умеет новый модуль?
📝 Markdown → HTML/PDF за одну команду
🎨 4 встроенные темы (включая тёмную!)
🌈 50+ стилей подсветки кода
📊 Mermaid диаграммы прямо в документах
⚡️ Работает офлайн или через API
🎯 Для кого это?
• Пишете документацию? Теперь она будет красивой!
• Ведёте техблог? Конвертируйте посты в PDF
• Делаете презентации? Mermaid диаграммы включены!
• Учитесь/учите? Идеально для конспектов с кодом
💡 Простой пример
# Обычная конвертация
python md_converter.py README.md
# PDF с тёмной темой
python md_converter.py docs.md --format pdf --theme dark
Если честно, то я не проводил обширного тестирования и проблемы все ещё могут быть, но в ходе разработки решил кучу проблемных ситуаций. Если что-то пойдет не так, можете писать мне в личку или сюда в директ.
GitHub: https://github.com/Dmatryus/miniutils/tree/main
GitHub
GitHub - Dmatryus/miniutils: A set of small scripts for simple tasks.
A set of small scripts for simple tasks. Contribute to Dmatryus/miniutils development by creating an account on GitHub.
🔥4
Forwarded from Machine learning Interview
This media is not supported in your browser
VIEW IN TELEGRAM
🎤 Microsoft выкатил **VibeVoice** — новую SoTA модель Text-to-Speech (TTS) на **1.5B параметров** под лицензией MIT 🔥
Возможности
- 🎧 Генерация до 90 минут аудио за раз
- 👥 Поддержка >4 голосов одновременно
- ⚡ Режим стриминга + готовится версия на 7B
- 🌍 Кросс-языковая генерация и даже синтез пения 🎶
- 🎭 Управление эмоциями и экспрессивностью речи
Это делает VibeVoice одним из самых мощных и доступных open-source TTS-решений прямо сейчас. Огромный шаг от Microsoft в сторону открытых голосовых технологий! 🚀
https://huggingface.co/microsoft/VibeVoice-1.5B
@machinelearning_interview
Возможности
- 🎧 Генерация до 90 минут аудио за раз
- 👥 Поддержка >4 голосов одновременно
- ⚡ Режим стриминга + готовится версия на 7B
- 🌍 Кросс-языковая генерация и даже синтез пения 🎶
- 🎭 Управление эмоциями и экспрессивностью речи
Это делает VibeVoice одним из самых мощных и доступных open-source TTS-решений прямо сейчас. Огромный шаг от Microsoft в сторону открытых голосовых технологий! 🚀
https://huggingface.co/microsoft/VibeVoice-1.5B
@machinelearning_interview
❤2
Forwarded from Machine learning Interview
This media is not supported in your browser
VIEW IN TELEGRAM
💥 SmolVLA: компактная VLA-модель для роботов, которая обогнала крупных конкурентов — и она полностью open source!
🚀 Что это такое:
SmolVLA — новая vision-language-action модель для робототехники, обученная только на открытых датасетах LeRobot (Hugging Face). Несмотря на размер всего 450M параметров, она показывает результаты лучше более крупных моделей вроде ACT.
📌 Почему интересно:
✅ +26% точности благодаря предобучению на open-source данных
✅ Запускается даже на обычном MacBook
✅ Ответы на 30% быстрее за счёт async-инференса и оптимизаций
✅ Сильные результаты на Meta-World, LIBERO, SO100, SO101
✅ Полностью открыта: веса, код, пайплайн и стек для оценки
🧠 Трюки для эффективности:
- меньше визуальных токенов
- выходы берутся с промежуточных слоёв
- разделение perception и action для ускорения
📍 SmolVLA — отличный пример того, что может дать сообщество, когда делится данными и строит открытые решения в робототехнике.
https://huggingface.co/blog/smolvla
🚀 Что это такое:
SmolVLA — новая vision-language-action модель для робототехники, обученная только на открытых датасетах LeRobot (Hugging Face). Несмотря на размер всего 450M параметров, она показывает результаты лучше более крупных моделей вроде ACT.
📌 Почему интересно:
✅ +26% точности благодаря предобучению на open-source данных
✅ Запускается даже на обычном MacBook
✅ Ответы на 30% быстрее за счёт async-инференса и оптимизаций
✅ Сильные результаты на Meta-World, LIBERO, SO100, SO101
✅ Полностью открыта: веса, код, пайплайн и стек для оценки
🧠 Трюки для эффективности:
- меньше визуальных токенов
- выходы берутся с промежуточных слоёв
- разделение perception и action для ускорения
📍 SmolVLA — отличный пример того, что может дать сообщество, когда делится данными и строит открытые решения в робототехнике.
https://huggingface.co/blog/smolvla
#python
Я позволю себе украсть идею у Дэна Байдера, чью книгу я сейчас читаю и запустить серию мыслей по поводу программирования на Python. Для меня это одновременно конспект и рефлексия на тему содержания книги, а вам просто может быть интересно.
И первая тема: менеджеры контекста и инструкции with.
Наверняка вы хоть раз писали что-то типа
with open("model.pickle", "br") as f:
model = pickle.read(f)
Это стандартный путь работы с файлами в python. Зачем так делать? Чтобы гарантировать закрытие контекста файла. В файлах используются специальные дескрипторы, и если их не поставить, то файл может поламаться.
Эта штука называется контекстом. Открытие файла - открывает контекст f, а функция f.close(). И вот чтобы не париться со всем этим есть конструкция менеджера контекста и инструкция with которая упрощает работу с ним.
Такие же приколы есть например с БД, где коннект имеет контекста, и его необходимо закрывать, например, чтобы освободить пулл коннектов.
Вы можете мутить свои менеджеры контекстов, взаимодействующие с
Есть и другой способ. Его просто примером покажу. Там декоратор и фабричная функция. Подходы эквивалентны выбирать, отталкиваясь от кодстайла.
Я позволю себе украсть идею у Дэна Байдера, чью книгу я сейчас читаю и запустить серию мыслей по поводу программирования на Python. Для меня это одновременно конспект и рефлексия на тему содержания книги, а вам просто может быть интересно.
И первая тема: менеджеры контекста и инструкции with.
Наверняка вы хоть раз писали что-то типа
with open("model.pickle", "br") as f:
model = pickle.read(f)
Это стандартный путь работы с файлами в python. Зачем так делать? Чтобы гарантировать закрытие контекста файла. В файлах используются специальные дескрипторы, и если их не поставить, то файл может поламаться.
Эта штука называется контекстом. Открытие файла - открывает контекст f, а функция f.close(). И вот чтобы не париться со всем этим есть конструкция менеджера контекста и инструкция with которая упрощает работу с ним.
Такие же приколы есть например с БД, где коннект имеет контекста, и его необходимо закрывать, например, чтобы освободить пулл коннектов.
Вы можете мутить свои менеджеры контекстов, взаимодействующие с
with для этого нужно реализовать функции __enter__(self) для открытия контекста и __exit__(self, exc_type, exc_val, exc_tb) для закрытия. Есть и другой способ. Его просто примером покажу. Там декоратор и фабричная функция. Подходы эквивалентны выбирать, отталкиваясь от кодстайла.
from contextlib import contextmanager
@contextmanager
def managed_file(name):
try:
f = open(name, 'w')
yield f
finally:
f.close()
#LLM
🤖 Мой 40 дневный опыт работы с Claude
Многие спрашивали меня про подписку на Claude Pro, так что решил поделиться своим опытом.
🚀 Как всё начиналось
Изначально я начал пробовать Claude просто из любопытства. Честно говоря, первые попытки были полным провалом.
Знаете эту проблему с большими нейронками? Попросишь его приготовить макароны, а он начинает с того, как вырастить пшеницу 😅
Серьёзно — дикий over-engineering на ровном месте. Простые вещи усложнялись до невозможности, а результат чаще всего тупо не получался.
💰 Вопрос подписки
Быстро понял, что плана за $20 не хватает. Типа немного работать над чем-то небольшим - ок, но это не мой путь)
Перешёл на Claude Pro за $100 — лимиты в 5 раз больше. Вот это уже нормально!
Когда заканчивается лимит? Обычно где-то к концу рабочего дня, часов в 18-19 или 23, если весь день активно пользовался. Обычно обновления ждешь час-два. Что хорошо для перерыва.
⚡ Что я делаю с Claude
Рабочие задачи:
Пишу небольшие функции и скрипты (до 200 строк)
Переписываю код на другие фреймворки
Добавляю функциональность v2 к существующим проектам
Создаю презентации (получается вполне достойно)
Исследования и анализ данных
Личные проекты:
* Различные эксперименты с кодом
* Обучающие материалы
🎯 Что работает хорошо
* Структурирование информации
* Создание технической документации
Сейчас у меня ~2-3 балла по эффективности из 5 возможных.
❌ Ограничения
Чего Claude НЕ умеет:
* Рисовать (если нужны иллюстрации — ищите другие решения)
* Работать с визуальным контентом на продвинутом уровне
* Работать с аудио
Иногда он всё ещё слишком позитивный и "правильный" в общении — как будто общается с детьми.
🤔 Стоит ли оно того?
Честно? Чисто функционально Claude не стоит $100 в месяц.
Но я продлил подписку.
Почему? Потому что мне просто весело с ним работать! Это как прикольная игрушка, которая ещё и пользу приносит.
Я всё ещё прокачиваю свои навыки работы с ним. С каждым разом становлюсь чуть более эффективным в формулировке запросов и получении нужных результатов.
В одном из следующих постов расскажу подробнее про конкретные кейсы.
🤖 Мой 40 дневный опыт работы с Claude
Многие спрашивали меня про подписку на Claude Pro, так что решил поделиться своим опытом.
🚀 Как всё начиналось
Изначально я начал пробовать Claude просто из любопытства. Честно говоря, первые попытки были полным провалом.
Знаете эту проблему с большими нейронками? Попросишь его приготовить макароны, а он начинает с того, как вырастить пшеницу 😅
Серьёзно — дикий over-engineering на ровном месте. Простые вещи усложнялись до невозможности, а результат чаще всего тупо не получался.
💰 Вопрос подписки
Быстро понял, что плана за $20 не хватает. Типа немного работать над чем-то небольшим - ок, но это не мой путь)
Перешёл на Claude Pro за $100 — лимиты в 5 раз больше. Вот это уже нормально!
Когда заканчивается лимит? Обычно где-то к концу рабочего дня, часов в 18-19 или 23, если весь день активно пользовался. Обычно обновления ждешь час-два. Что хорошо для перерыва.
⚡ Что я делаю с Claude
Рабочие задачи:
Пишу небольшие функции и скрипты (до 200 строк)
Переписываю код на другие фреймворки
Добавляю функциональность v2 к существующим проектам
Создаю презентации (получается вполне достойно)
Исследования и анализ данных
Личные проекты:
* Различные эксперименты с кодом
* Обучающие материалы
🎯 Что работает хорошо
* Структурирование информации
* Создание технической документации
Сейчас у меня ~2-3 балла по эффективности из 5 возможных.
❌ Ограничения
Чего Claude НЕ умеет:
* Рисовать (если нужны иллюстрации — ищите другие решения)
* Работать с визуальным контентом на продвинутом уровне
* Работать с аудио
Иногда он всё ещё слишком позитивный и "правильный" в общении — как будто общается с детьми.
🤔 Стоит ли оно того?
Честно? Чисто функционально Claude не стоит $100 в месяц.
Но я продлил подписку.
Почему? Потому что мне просто весело с ним работать! Это как прикольная игрушка, которая ещё и пользу приносит.
Я всё ещё прокачиваю свои навыки работы с ним. С каждым разом становлюсь чуть более эффективным в формулировке запросов и получении нужных результатов.
В одном из следующих постов расскажу подробнее про конкретные кейсы.
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🔥 Большое обновление в pandas: Expressions
Pandas исполняется уже 17 лет, и наконец-то в версии 3.0 появляется то, чего ждали многие — выражения (expressions) через
Раньше:
Теперь:
Почему это реально круто:
— Больше никаких непонятных
— Код читается и дебажится проще:
✅ Поддержка
✅ Это первый шаг к полноценной системе выражений в духе Polars.
Пример:
✅ Чище, безопаснее и интуитивнее.
✅ Pandas берёт лучшее у новых библиотек (Polars, Narwhals) и возвращает нас к удобному и современному синтаксису.
🔗 Подробная статья по теме
🐸 Библиотека дата-сайентиста
#свежак
Pandas исполняется уже 17 лет, и наконец-то в версии 3.0 появляется то, чего ждали многие — выражения (expressions) через
pd.col.Раньше:
df = df.assign(temp_f = lambda x: x['temp_c'] * 9 / 5 + 32)
Теперь:
df = df.assign(temp_f = pd.col('temp_c') * 9 / 5 + 32)Почему это реально круто:
— Больше никаких непонятных
lambda, которые ломаются в циклах.— Код читается и дебажится проще:
pd.col('a') + 10 # => (col('a') + 10)
str, dt, NumPy ufunc и фильтрации прямо в loc.Пример:
df.assign(
city_upper = pd.col('city').str.upper(),
log_temp_c = np.log(pd.col('temp_c'))
)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
#python
Ещё немного снипитов кода упертых из книги Дэна Байдера.
Я не знал, что при возвращение внутренней функции, она запоминает состояние внешней. Теперь знаю, даже представил себе, как это работает.
Вот пара примеров:
Здесь запоминается текст, переданный при получении внутренней функции.
Вот еще наглядный пример:
Практическое применение - создание фабрики функций. По сути внешняя конфигурирует внутреннюю. Возможность интересная и, вероятно, в определенных обстоятельствах полезная. Я же обычно предпочитаю делать объекты-калькуляторы. У которых состояние конфигурируется через внутренние атрибуты и есть метод расчёта
Ещё немного снипитов кода упертых из книги Дэна Байдера.
Я не знал, что при возвращение внутренней функции, она запоминает состояние внешней. Теперь знаю, даже представил себе, как это работает.
Вот пара примеров:
def get_speak_func(text, volume):
def whisper():
return text.lower() + '...'
def yell():
return text.upper() + '!'
if volume > 0.5:
return yell
else:
return whisper
>>> get_speak_func('Привет, Мир', 0.7)()
'ПРИВЕТ, МИР!'
Здесь запоминается текст, переданный при получении внутренней функции.
Вот еще наглядный пример:
def make_adder(n):
def add(x):
return x + n
return add
>>> plus_3 = make_adder(3)
>>> plus_5 = make_adder(5)
>>> plus_3(4)
7
>>> plus_5(4)
9
Практическое применение - создание фабрики функций. По сути внешняя конфигурирует внутреннюю. Возможность интересная и, вероятно, в определенных обстоятельствах полезная. Я же обычно предпочитаю делать объекты-калькуляторы. У которых состояние конфигурируется через внутренние атрибуты и есть метод расчёта
calc(self, *args). Мне кажется такой подход более явным , а Явное лучше, чем неявное.
👍2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Полезная шпаргалка: как выбрать правильное распределение для данных
1️⃣ Начните с гистограммы
— Простая, но мощная визуализация.
— Помогает понять форму данных: колоколообразная (Normal), быстро падающая (Exponential), ровная (Uniform), с несколькими пиками (Mixture).
2️⃣ Протестируйте разные распределения
— Используем библиотеку distfit для подбора распределений.
— Проверяет ~90 типов распределений автоматически:
3️⃣ Визуализируйте подгонку
— Всегда проверяй глазами!
— Используй PDF (распределение) и CDF (кумулятивное распределение):
4️⃣ Не забывайте про нестандартные данные
— Дискретные счётные данные → binomial, Poisson.
— Сложные или многопиковые данные → non-parametric (quantile, percentile).
Пример:
5️⃣ Проверяйте стабильность
— Бутстрэпинг помогает проверить, насколько выбранное распределение устойчиво к случайным выборкам:
🐸 Библиотека дата-сайентиста
#свежак
— Простая, но мощная визуализация.
— Помогает понять форму данных: колоколообразная (Normal), быстро падающая (Exponential), ровная (Uniform), с несколькими пиками (Mixture).
import matplotlib.pyplot as plt
import numpy as np
data = np.random.normal(50, 15, 1000)
plt.hist(data, bins=30, color='skyblue', edgecolor='black', alpha=0.7)
plt.xlabel('Values'); plt.ylabel('Count'); plt.title('Гистограмма данных')
plt.show()
— Используем библиотеку distfit для подбора распределений.
— Проверяет ~90 типов распределений автоматически:
from distfit import distfit
import numpy as np
my_data = np.random.normal(25, 8, 2000)
fitter = distfit(method='parametric')
fitter.fit_transform(my_data)
print("Лучшее распределение:", fitter.model['name'])
print("Параметры:", fitter.model['params'])
— Всегда проверяй глазами!
— Используй PDF (распределение) и CDF (кумулятивное распределение):
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15,6))
fitter.plot(chart='PDF', ax=ax1); ax1.set_title('PDF')
fitter.plot(chart='CDF', ax=ax2); ax2.set_title('CDF')
plt.show()
— Дискретные счётные данные → binomial, Poisson.
— Сложные или многопиковые данные → non-parametric (quantile, percentile).
Пример:
from scipy.stats import binom
count_data = binom(20, 0.3).rvs(1000)
discrete_fitter = distfit(method='discrete')
discrete_fitter.fit_transform(count_data)
discrete_fitter.plot()
— Бутстрэпинг помогает проверить, насколько выбранное распределение устойчиво к случайным выборкам:
fitter.bootstrap(my_data, n_boots=100)
print(fitter.summary[['name','score','bootstrap_score','bootstrap_pass']])
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
#LLM
🤖 Как я использую Claude
Как и обещал, рассказываю про конкретное использование Claude на реальных проектах.
🚫 Первая ошибка: "Один чат — один проект"
Сначала я пытался делать весь проект в одном чате. И это была фундаментальная ошибка.
Проблема в том, что у Claude есть ограничение на длинну контекста.когда он в неё упирается, больше в чат ничего написать нельзя.
Вторая проблема - все в одном месте, и если что-то идёт не в заданной промптом последовательности, Claude может начать тупить.
💡 Решение: Разделение на специализированных агентов
Понял, что нужно постепенно разбивать части проектов на разные составляющие.
🎯 Мои специализированные "агенты":
📋 Постановщик задач
- Обсуждаем задачу
- Формируем полное описание того, что нужно делать
🗓️ Планировщик
Можно было бы его назвать архитектором, но слишком много чести, да и задача его скорее сформулировать архитектуру, чем написать её.
- Описываем намеченный техстэк
- Описываем намеченную архитектуру
- Планируем этапы разработки с подробным описанием, что нужно сделать
📝 Кодер
Пишет код по заданному планировщиком плану шаг за шагом. Я требую от него документировать со схемами каждый шаг и писать демо скрипты для демонстрации работы.
🧪 Тестер
Пишет тесты и помогает с дебагом
📚 Документатор
- Создает пользовательские и разработческие доки
- Оформляет схемы и диаграммы
- Описывает, что как и почему
🚀 Деплойщик
- Контейнеризация
- Подготовка к развертыванию
⚡ Как это работает на практике
Важные принципы:
✅ Каждый агент = отдельный проект со своим системным промптом
✅ Изоляция ответственности — каждый делает своё дело
✅ Последовательность выполнения — один за другим, без пересечений
🔄 Что с переписыванием?
Да, всё равно приходится переписывать. Но это гораздо проще, когда:
- У каждого агента есть конкретная функция
- Контекст не засоряется лишней информацией
- Можно быстро вникнуть в то, что написано
🤖 Как я использую Claude
Как и обещал, рассказываю про конкретное использование Claude на реальных проектах.
🚫 Первая ошибка: "Один чат — один проект"
Сначала я пытался делать весь проект в одном чате. И это была фундаментальная ошибка.
Проблема в том, что у Claude есть ограничение на длинну контекста.когда он в неё упирается, больше в чат ничего написать нельзя.
Вторая проблема - все в одном месте, и если что-то идёт не в заданной промптом последовательности, Claude может начать тупить.
💡 Решение: Разделение на специализированных агентов
Понял, что нужно постепенно разбивать части проектов на разные составляющие.
🎯 Мои специализированные "агенты":
📋 Постановщик задач
- Обсуждаем задачу
- Формируем полное описание того, что нужно делать
🗓️ Планировщик
Можно было бы его назвать архитектором, но слишком много чести, да и задача его скорее сформулировать архитектуру, чем написать её.
- Описываем намеченный техстэк
- Описываем намеченную архитектуру
- Планируем этапы разработки с подробным описанием, что нужно сделать
📝 Кодер
Пишет код по заданному планировщиком плану шаг за шагом. Я требую от него документировать со схемами каждый шаг и писать демо скрипты для демонстрации работы.
🧪 Тестер
Пишет тесты и помогает с дебагом
📚 Документатор
- Создает пользовательские и разработческие доки
- Оформляет схемы и диаграммы
- Описывает, что как и почему
🚀 Деплойщик
- Контейнеризация
- Подготовка к развертыванию
⚡ Как это работает на практике
Важные принципы:
✅ Каждый агент = отдельный проект со своим системным промптом
✅ Изоляция ответственности — каждый делает своё дело
✅ Последовательность выполнения — один за другим, без пересечений
🔄 Что с переписыванием?
Да, всё равно приходится переписывать. Но это гораздо проще, когда:
- У каждого агента есть конкретная функция
- Контекст не засоряется лишней информацией
- Можно быстро вникнуть в то, что написано
👍2
Forwarded from Machine learning Interview
⚡ Что такое vLLM и зачем он нужен?
Это движок для сверхбыстрого инференса больших языковых моделей. В блоге Алески Гордича разобрали, как он устроен под капотом.
Главные фишки:
• KV-cache с paged attention — умно хранит память, чтобы модель не тормозила на длинных запросах.
• Continuous batching — новые запросы можно подмешивать прямо во время работы, без ожидания.
• Оптимизации:
• chunked prefill — длинные промпты режутся на куски, чтобы не блокировать других
• prefix caching — общий префикс считается один раз, а не заново для всех
• guided decoding — модель пишет строго по правилам (например, JSON)
• speculative decoding — маленькая модель «накидывает» текст, большая подтверждает.
• Масштабирование: работает и на одной видеокарте, и на кластере из десятков.
• Автотюнинг и бенчмарки: встроенные тесты подбирают оптимальные настройки под SLA.
Итог: vLLM — это уже не просто библиотека, а полноценная архитектура для работы LLM в проде: быстрая, гибкая и экономная.
🟠 Подробный разбор: https://www.aleksagordic.com/blog/vllm
@machinelearning_interview
Это движок для сверхбыстрого инференса больших языковых моделей. В блоге Алески Гордича разобрали, как он устроен под капотом.
Главные фишки:
• KV-cache с paged attention — умно хранит память, чтобы модель не тормозила на длинных запросах.
• Continuous batching — новые запросы можно подмешивать прямо во время работы, без ожидания.
• Оптимизации:
• chunked prefill — длинные промпты режутся на куски, чтобы не блокировать других
• prefix caching — общий префикс считается один раз, а не заново для всех
• guided decoding — модель пишет строго по правилам (например, JSON)
• speculative decoding — маленькая модель «накидывает» текст, большая подтверждает.
• Масштабирование: работает и на одной видеокарте, и на кластере из десятков.
• Автотюнинг и бенчмарки: встроенные тесты подбирают оптимальные настройки под SLA.
Итог: vLLM — это уже не просто библиотека, а полноценная архитектура для работы LLM в проде: быстрая, гибкая и экономная.
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machine learning Interview
Media is too big
VIEW IN TELEGRAM
OpenAI опубликовали исследование о причинах галлюцинации LLM.
Галлюцинации - это не мистический сбой в сознании ИИ, а вполне предсказуемый побочный эффект его обучения.
Представьте, что перед моделью стоит задача бинарной классификации - определить, является ли предложенное утверждение корректным или нет. Математическая выкладка в исследовании проста: уровень ошибок генерации как минимум в 2 раза превышает уровень ошибок классификации. Если модель не способна надежно отличить факт от вымысла, она неизбежно будет этот вымысел генерировать.
Даже на идеально чистых данных статистические цели обучения подталкивают модель к генерации ошибок. Особенно это касается фактов, которые редко встречаются в обучающей выборке.
В работе вводится понятие singleton rate — доля фактов, которые появились в данных лишь один раз. Теоретический расклад показывает, что уровень галлюцинаций модели будет как минимум равен этой доле.
Проще говоря, если 20% фактов о днях рождения в датасете встретились единожды, модель будет выдумывать дни рождения как минимум в 20% случаев.
Модель DeepSeek-V3, на просьбу назвать день рождения одного из авторов статьи, трижды выдала неверные даты: 03-07, 15-06 и 01-01. Ни одна из них не была даже близка к правильной (осенью).
В другом тесте, где нужно было сосчитать количество букв D в слове DEEPSEEK, та же DeepSeek-V3 выдавала 2 или 3, а модели компании Марка Цукерберга и Claude 3.7 Sonnet доходили до 6 и 7.
При этом базовые модели после претрейна часто показывают отличную калибровку. Например, у предобученной GPT-4 ожидаемая ошибка калибровки составляла всего 0.007, что говорит о высокой статистической адекватности ее предсказаний.
Ответ на этот вопрос - в системе оценки. Большинство современных бенчмарков поощряют угадывание. Модели, по сути, постоянно находятся в режиме сдачи экзамена, где за правильный ответ дают 1 балл, а за пустой бланк или ответ я не знаю - 0. В такой системе оптимальная стратегия при неуверенности - только угадать. Любой шанс на правильный ответ лучше, чем гарантированный ноль.
Эту гипотезу подтвердили анализом популярных оценочных наборов.
В GPQA, MMLU-Pro, Omni-MATH, SWE-bench и HLE используется строго бинарная система оценки (правильно/неправильно). Возможности получить частичный балл за честное признание в незнании там просто нет. Из 10 рассмотренных в исследовании популярных бенчмарков только один, WildBench, присуждает частичные баллы за ответы формата я не знаю. Остальные же фактически наказывают модель за отказ галлюцинировать, создавая эпидемию штрафов за неуверенность и поощряя ее выдавать правдоподобную ложь.
OpenAI предлагает встраивать явные целевые уровни уверенности в рубрики, вводить поведенческую калибровку и оценивать модели по секциям с разными порогами уверенности.
Еще рекомендуют включают мониторинг singleton-rate на корпусе, измерение вероятности важных ответов, комбинирование RAG с верификацией фактов и изменение лидербордов чтобы ответы я не знаю не штрафовались автоматически.
#AI #ML #LLM #Research #OpenAI
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machine learning Interview
⚡️ REFRAG: новое поколение RAG
REFRAG ускоряет работу Retrieval-Augmented Generation, сжимая контекст в chunk embeddings, сохраняя качество ответов.
📌 Результаты:
- До 30.85× быстрее первый токен
- До 16× длиннее эффективный контекст без потери точности
🔍 В чём идея:
Обычные RAG-промпты вставляют кучу текстов, половина из которых не нужна → модель тратит вычисления впустую.
REFRAG заменяет токены этих текстов кэшированными эмбеддингами, подгоняет их под размер декодера и подаёт вместе с вопросом.
Последовательность короче → внимание масштабируется по чанкам, а не по токенам → меньше памяти уходит на KV-кэш.
🎯 Как работает:
- Большинство чанков остаются сжатыми.
- Специальная политика выбирает, какие именно разжать обратно в токены, если важна точная формулировка.
- Обучение идёт в 2 шага: сначала модель учится восстанавливать токены из эмбеддингов, потом продолжается предобучение с задачей прогнозирования следующего абзаца (постепенно увеличивая размер чанков).
- Политика сжатия/разжатия тренируется через reinforcement learning, используя лосс предсказания слова как сигнал.
📄 Paper: arxiv.org/abs/2509.01092
REFRAG ускоряет работу Retrieval-Augmented Generation, сжимая контекст в chunk embeddings, сохраняя качество ответов.
📌 Результаты:
- До 30.85× быстрее первый токен
- До 16× длиннее эффективный контекст без потери точности
🔍 В чём идея:
Обычные RAG-промпты вставляют кучу текстов, половина из которых не нужна → модель тратит вычисления впустую.
REFRAG заменяет токены этих текстов кэшированными эмбеддингами, подгоняет их под размер декодера и подаёт вместе с вопросом.
Последовательность короче → внимание масштабируется по чанкам, а не по токенам → меньше памяти уходит на KV-кэш.
🎯 Как работает:
- Большинство чанков остаются сжатыми.
- Специальная политика выбирает, какие именно разжать обратно в токены, если важна точная формулировка.
- Обучение идёт в 2 шага: сначала модель учится восстанавливать токены из эмбеддингов, потом продолжается предобучение с задачей прогнозирования следующего абзаца (постепенно увеличивая размер чанков).
- Политика сжатия/разжатия тренируется через reinforcement learning, используя лосс предсказания слова как сигнал.
📄 Paper: arxiv.org/abs/2509.01092
🔥2