Dmatryusофрения
41 subscribers
291 photos
10 videos
15 files
148 links
Пишу о книгах, лидерстве, технологиях, opensource, своих проектах и наверное чем-то ещё. Ну и репосты IT приколямб.
Download Telegram
#open_source
#ml
#classic
#myproject@dm_projects_log

Замутил новую версию либы. Переработал загрузчик датасетов полностью.

Что не отображено в доках, так это изменение подхода к разработке: больше ручной работы - меньше нейронок.
🔥2
#classic #open_source

Nvidia выпустили статью об ускорении вычислений в pandas посредством использования GPU через библиотеку NVIDIA cuDF.

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

Что касается использования не в тетрадке, то операции надо делать через библиотечный датафрейм, у которого API идентичное пандасовскому.

В статье разобраны 3 кейса с ускорением.
threshold_methods.html
54.8 KB
#classic

Я тут на прошлой неделе провел мини ресерч по выбору порога predict_proba для псевдо разметки. Результатами сразу не стал делиться, так как планировал ещё поставить эксперимент и посмотреть на методы в деле, но это довольно муторно, так что я решил отложить.

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

У меня в ресерче указано, что F1 можно применять для выбора порога на бинарной классификации, но если настраивается порог для каждого класса в отдельности (что рекомендуется делать при различиях в распределениях классов), то можно решать задачу, как бинарную классификацию в формате один-против всех для каждого класса.
pandas-polars-comparison-html.html
36 KB
#classic

Вы наверняка слышали, что Polaris быстрее, сильнее и лучше, чем Pandas. Я всегда относился к этому с некоторым скепсисом. Теперь не буду 🙃

В общем, провел на днях ресерч по вопросу. Сам ресерч во вложении, но, если коротко: отдавайте предпочтение Polaris на этапе ETL. Большинство ML библиотек не поддерживают Polaris, так что в ML данные лучше передавать в numpy или Pandas.
🔥3
Forwarded from Градиент обреченный (Sergei Averkiev)
🔺 Открытые модели от OpenAI

Долгожданный open source от дяди Сэма.

🔸 Выложили две модели — 20B и 120B. Обе MoE, активных параметров у них 3.6B и 5.1B.

🔸 Должны влазить в 16Gb и 80Gb видеокарты. Вот тут релиз transformers 4.55.0 с описанием.

🔸 Модельки чисто текстовые, с контекстом 128k. Токенайзер тот же, что у gpt-4o.

🔸 Есть демо, чтобы поиграться с моделями.

👉 HF | Релиз
Я со своими ресерчами в html
😁2
🐬 Dolphin — превращает PDF в структурированные данные

Dolphin (Document Image Parsing via Heterogeneous Anchor Prompting) — 100% open source-модель для автоматического разбора PDF и сканов.

Зачем нужен:
— Конвертирует документы в готовые форматы: Markdown, HTML, LaTeX, JSON.
— Извлекает текст, таблицы, формулы и изображения.
— Полезен как для подготовки данных для LLM, так и для любых автоматизированных систем, архивов, поиска и аналитики.

Как работает:
1️⃣ Анализ макета страницы — определяет все элементы в естественном порядке чтения.
2️⃣ Параллельный парсинг — с «якорями» и промптами под каждый тип контента.

Представьте, что у вас есть 500 отчётов в PDF с финансовыми таблицами и графиками. Dolphin превращает их в аккуратный CSV или JSON, готовый для анализа в Pandas или загрузки в базу данных — без ручного копипаста и правок.


💡 Лёгкая архитектура + параллельная обработка = высокая скорость без потери качества.

🔗 Репозиторий с кодом и моделями: https://clc.to/6gPIwA

Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
#open_source
#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
💯4
#open_source
#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
🔥4
#classic
Люблю такие шпоры
🤩2👌1
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
2
2025-08-29 13_40_47_neg.png
85.5 KB
#scheme #myproject

Делюсь красивой схемкой, которую нарисовал сегодня 😊
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
#python

Я позволю себе украсть идею у Дэна Байдера, чью книгу я сейчас читаю и запустить серию мыслей по поводу программирования на 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 в месяц.
Но я продлил подписку.
Почему? Потому что мне просто весело с ним работать! Это как прикольная игрушка, которая ещё и пользу приносит.
Я всё ещё прокачиваю свои навыки работы с ним. С каждым разом становлюсь чуть более эффективным в формулировке запросов и получении нужных результатов.

В одном из следующих постов расскажу подробнее про конкретные кейсы.
🔥 Большое обновление в 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