Dmatryusофрения
41 subscribers
290 photos
10 videos
15 files
148 links
Пишу о книгах, лидерстве, технологиях, opensource, своих проектах и наверное чем-то ещё. Ну и репосты IT приколямб.
Download Telegram
🔥 Большое обновление в pandas: Expressions

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.
Это первый шаг к полноценной системе выражений в духе Polars.

Пример:
df.assign(
city_upper = pd.col('city').str.upper(),
log_temp_c = np.log(pd.col('temp_c'))
)


Чище, безопаснее и интуитивнее.
Pandas берёт лучшее у новых библиотек (Polars, Narwhals) и возвращает нас к удобному и современному синтаксису.

🔗 Подробная статья по теме

🐸 Библиотека дата-сайентиста

#свежак
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
Полезная шпаргалка: как выбрать правильное распределение для данных

1️⃣ Начните с гистограммы

— Простая, но мощная визуализация.
— Помогает понять форму данных: колоколообразная (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()


2️⃣ Протестируйте разные распределения

— Используем библиотеку 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'])


3️⃣ Визуализируйте подгонку

— Всегда проверяй глазами!
— Используй 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()


4️⃣ Не забывайте про нестандартные данные

— Дискретные счётные данные → 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()


5️⃣ Проверяйте стабильность

— Бутстрэпинг помогает проверить, насколько выбранное распределение устойчиво к случайным выборкам:
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 может начать тупить.

💡 Решение: Разделение на специализированных агентов

Понял, что нужно постепенно разбивать части проектов на разные составляющие.

🎯 Мои специализированные "агенты":
📋 Постановщик задач
- Обсуждаем задачу
- Формируем полное описание того, что нужно делать

🗓️ Планировщик
Можно было бы его назвать архитектором, но слишком много чести, да и задача его скорее сформулировать архитектуру, чем написать её.
- Описываем намеченный техстэк
- Описываем намеченную архитектуру
- Планируем этапы разработки с подробным описанием, что нужно сделать

📝 Кодер
Пишет код по заданному планировщиком плану шаг за шагом. Я требую от него документировать со схемами каждый шаг и писать демо скрипты для демонстрации работы.

🧪 Тестер
Пишет тесты и помогает с дебагом

📚 Документатор
- Создает пользовательские и разработческие доки
- Оформляет схемы и диаграммы
- Описывает, что как и почему

🚀 Деплойщик
- Контейнеризация
- Подготовка к развертыванию

Как это работает на практике

Важные принципы:

Каждый агент = отдельный проект со своим системным промптом

Изоляция ответственности — каждый делает своё дело

Последовательность выполнения — один за другим, без пересечений

🔄 Что с переписыванием?

Да, всё равно приходится переписывать. Но это гораздо проще, когда:
- У каждого агента есть конкретная функция
- Контекст не засоряется лишней информацией
- Можно быстро вникнуть в то, что написано
👍2
Что такое 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
Please open Telegram to view this post
VIEW IN TELEGRAM
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, что говорит о высокой статистической адекватности ее предсказаний. Кто бы сомневался.

🟡Почему галлюцинации не исчезают после пост-тренинга и RLHF?

Ответ на этот вопрос - в системе оценки. Большинство современных бенчмарков поощряют угадывание. Модели, по сути, постоянно находятся в режиме сдачи экзамена, где за правильный ответ дают 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
⚡️ REFRAG: новое поколение RAG

REFRAG ускоряет работу Retrieval-Augmented Generation, сжимая контекст в chunk embeddings, сохраняя качество ответов.

📌 Результаты:

- До 30.85× быстрее первый токен

- До 16× длиннее эффективный контекст без потери точности

🔍 В чём идея:

Обычные RAG-промпты вставляют кучу текстов, половина из которых не нужна → модель тратит вычисления впустую.

REFRAG заменяет токены этих текстов кэшированными эмбеддингами, подгоняет их под размер декодера и подаёт вместе с вопросом.

Последовательность короче → внимание масштабируется по чанкам, а не по токенам → меньше памяти уходит на KV-кэш.

🎯 Как работает:

- Большинство чанков остаются сжатыми.

- Специальная политика выбирает, какие именно разжать обратно в токены, если важна точная формулировка.

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

- Политика сжатия/разжатия тренируется через reinforcement learning, используя лосс предсказания слова как сигнал.

📄 Paper: arxiv.org/abs/2509.01092
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Все говорят про LLM и diffusion, а вот про OCR как будто забыли…

dots-ocr — свежая open-source модель (1.7B), которая вырывается в лидеры для распознавания документов:
✔️ 100+ языков (мультиязычный парсинг)
✔️ Работает и с PDF, и с изображениями
✔️ Понимает таблицы, формулы, структурированный текст
✔️ SOTA качество при полностью открытом коде

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

👍 Это прям ключ для дата-сайентистов, NLP/LLM инженеров и всех, кто работает с данными «в дикой природе».

📱 Репозиторий

🐸 Библиотека дата-сайентиста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Unsloth показал, как динамическая квантизация (Dynamic GGUFs) может радикально ускорить и облегчить работу LLM, не теряя качество.

В чём суть
Обычные методы квантизации уменьшают разрядность весов модели одинаково для всех слоёв.
Unsloth пошёл дальше: каждому слою подбирается своё число бит.
- Ключевые слои → 6–8 бит (чтобы сохранить точность).
- Второстепенные → 1–3 бита (для максимального сжатия).

Результаты, которых удалось добиться:
- 671B DeepSeek-V3.1: сжатие модели с 671GB до 192GB (–75%).
- 1-бит версия уже обгоняет GPT-4.1 и GPT-4.5 в «no-thinking» задачах.
- 3-бит версия превосходит Claude-4-Opus в «thinking» задачах.
- 5-бит версия догоняет и стабильно держит уровень SOTA.

🟢Почему это интересно:
- Сжатие → модели становятся доступнее для запуска на меньших GPU.
- Качество не падает, а иногда даже растёт за счёт умного распределения битности.
- Тесты на Aider Polyglot benchmark показывают лучшие результаты среди существующих quant-моделей.

🟢Итог
Dynamic GGUF от Unsloth — это не просто ещё один способ «урезать» модель, а технология, которая делает триллионные LLM компактными, быстрыми и при этом сверхточными.

Пост: https://docs.unsloth.ai/basics/unsloth-dynamic-ggufs-on-aider-polyglot

#Unsloth #LLM #Quantization #AI #AiderPolyglot
Please open Telegram to view this post
VIEW IN TELEGRAM
free-dev-sim-0.0.2.apk
42.5 MB
Я тут ко дню программиста решил игрулю намутить. Это только MVP прототип ради праздничного настроения, но оставлю здесь, на память.
⚡️ Самый быстрый движок для сервинга LLM уже тут — и он open-source

LMCache — новый движок, созданный для:
➡️ мгновенного time-to-first-token;
➡️ ыыше throughput даже при длинных контекстах;
➡️ 7× быстрее доступа к KV-кешам и поддержка 100× большего объёма кеша по сравнению с vLLM;
➡️ и всё это — полностью open-source.

Если вы работаете с LLM в продакшне, LMCache может стать настоящим гейм-чейнджером для latency-чувствительных приложений.

📱 Репозиторий

🐸 Библиотека дата-сайентиста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Polars теперь с поддержкой GPU — ускорение до 70%

Библиотека Polars получила новый GPU-движок на базе NVIDIA RAPIDS cuDF.

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

✔️ В бета-версии уже поддерживаются основные операции
✔️ Ускорение до 70% по сравнению с CPU-исполнением
✔️ Отлично подходит для задач работы с большими датасетами и аналитических воркфлоу

🔗 Подробнее в посте

🐸 Библиотека дата-сайентиста

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 MIT доказал: LLM могут логически рассуждать, если правильно их учить.

📄 Исследователи предложили метод PDDL-INSTRUCT. Он превращает обучение модели из «угадай ответ» в пошаговое решение задач с внешней проверкой.

Как это устроено:
1️⃣ На первом этапе модели показывают правильные и неправильные планы с объяснениями.
2️⃣ На втором этапе она сама прописывает рассуждения для каждого шага. После этого внешний инструмент (**VAL**) проверяет логику. Если ошибка - модель получает чёткое объяснение, что не так.

📊 Результаты:
- У Llama-3-8B точность выросла с 28% до 94% на задачах планирования.
- Подробная обратная связь работает намного лучше, чем простое «правильно/неправильно».

💡 Главное: модель не заменяет символический планировщик, а учится мыслить как он, сохраняя внешнюю проверку.

Такой подход можно применить к любым многошаговым задачам - от математики до программирования. Возможно, многие «невозможные» способности моделей скрыты внутри и ждут правильного метода обучения.

🟠Статья: https://arxiv.org/abs/2509.13351
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2
Channel photo updated
#LLM

Знаю, что LORA очень ходовая технология 🔥, давно хотел разобраться в ней, но все не доходили лапы 🐾. Сейчас немного подразобрался и делюсь с вами 😊

TL;DR: LoRA — это как апгрейд для нейросетей через маленькие плагины вместо полной переустановки системы. Экономит память, время и деньги, при этом дает отличные результаты.

🎯 Что это такое
LoRA — это способ "дообучить" большую языковую модель под конкретную задачу, но при этом не трогать саму модель. Представьте, что вы не переписываете всю книгу, а просто добавляете к ней умные закладки.

🧠 Как работает
Основная идея гениально проста, но давайте разберем математику подробнее:
Вместо изменения всех весов модели (что требует кучу памяти и времени), LoRA добавляет маленькие "адаптеры" — две небольшие матрицы A и B.

📐 Математика в деталях

Основная формула:
h = W₀x + ΔWx = W₀x + BAx


Где:
- W₀ — замороженные веса (размер d × k)
- ΔW — изменения весов = BA
- A — матрица r × k (r ≪ k)
- B — матрица d × r (r ≪ d)
- r — ранг адаптации (обычно 8-64)

Пример с числами:
- Оригинальная матрица: 4096 × 4096 = 16M параметров
- LoRA с r=16: (4096×16) + (16×4096) = 131K параметров
- Экономия в 122 раза! 🤯

🎛 Масштабирование
Финальная формула выглядит так:
h = W₀x + (α/r) × BAx


- α — альфа параметр (обычно 16 или 32)
- Позволяет контролировать силу адаптации
- Если α = r, то LoRA влияет "нормально"
- Если α > r, то LoRA влияет сильнее

🔧 Инициализация имеет значение
- Матрица A инициализируется случайно (Gaussian)
- Матрица B инициализируется нулями
- Это гарантирует, что в начале ΔW = 0
- Модель начинает с оригинального поведения

При этом:
- Старая модель заморожена ❄️
- Обучаются только крошечные адаптеры
- Экономия памяти в 70+ раз!

⚙️ Ключевые параметры
Ранг (r) — размер адаптеров
- r=8-16 обычно оптимально
- Больше ранг = лучше качество, но больше параметров

Альфа (α) — насколько сильно влияют адаптеры
- Обычно равна рангу или в 2 раза больше

## 🚀 Что можно делать

Адаптация к домену
Обучение следованию инструкциям
Изменение стиля генерации
Мультиязычная адаптация

🧬 Эволюция технологии

QLoRA — LoRA + квантизация
- Можно обучать 65B модели на одной GPU!

AdaLoRA — автоматический выбор ранга
- Сама определяет, где нужны большие адаптеры

LoRA+ — улучшенные learning rates
- Еще лучше качество адаптации

💡 Почему это важно
LoRA сделал fine-tuning доступным каждому:
- Не нужны datacenter'ы для обучения
- Можно экспериментировать на обычных GPU
- Быстрое переключение между задачами
- Модульность — один адаптер = одна задача

⚖️ Ограничения

- Работает не для всех типов изменений
- Нужно подбирать гиперпараметры
- Для кардинальных изменений может быть недостаточно
🤔2