Forwarded from Заскуль питона (Data Science)
Шпаргалки по визуализации в Python
✋ Всем привет! Аналитикам и другим специалистам в области анализа данных необходимо из семпла данных сделать какое-то исследование, найти закономерность в данных и презентовать это ПМ / руководству и др. Не для каждой задачи нужно строить дашборд, поскольку задача может требовать первичный анализ.
🤔 В начале не придаешь этому значения, так как таблицы для нас содержат уже достаточное количество информации + различные статистики. Но на этом этапе хочется иметь возможность визуализировать базовые или интересные штуковины, с помощью которых можно будет сгенерировать еще гипотез.
Визуализировать можно и через Matplotlib (база всех графиков в Python), Seaborn (более расширенный функционал, чем Matplotlib), Plotly (интерактивные графики).
⬇️ Ниже приведен в коде минимум, которым можно пользоваться. Это должно покрывать большое количество задач (~80%) на распределения, поведение метрики во времени. Конечно, есть и другие виды визуализации, но это базовые. Сюда еще можно отнести boxplot для визуализации.
❤️ Если вдруг, вы хотите делать более красивые графики, испытывать наслаждение при их построении, а также сделать их понятнее, вэлком ниже.
1️⃣ Matplotlib [дока]
🔗 Matplotlib CheatSheet (matplotlib.org)
🔗 Гайд на Kaggle по различным визуализациям
🔗 DataCamp Matplotlib CheatSheet
2️⃣ Seaborn [дока]
🔗 DataCamp Seaborn
🔗 Вот тут очень хорошо описано + есть по другим библиотекам
3️⃣ Plotly [дока]
🔗 Plotly Express, Colab
🔗 Plotly Cheatsheet
🙊 Сам я использую matplotlib и seaborn, потому что они быстро настраиваются, но кому-то заходит и Plotly, так как он при обычной настройке может сделать красоту. Каждому свое)
Ну и конечно же, можно использовать ChatGPT, Cursor и других ребят для отрисовки графиков, смотря какую цель преследуете
Ставьте🐳 , сохраняйте к себе, чтобы не потерять, тренируйтесь и все у вас получится!
Визуализировать можно и через Matplotlib (база всех графиков в Python), Seaborn (более расширенный функционал, чем Matplotlib), Plotly (интерактивные графики).
import matplotlib.pyplot as plt
import numpy as np
# Данные
x = np.linspace(0, 10, 100) # создаём массив от 0 до 10 из 100 точек
y = np.sin(x) # вычисляем sin(x)
data = np.random.randn(1000) # 1000 случайных значений из нормального распределения
# Фигура с 2 графиками (subplots)
fig, ax = plt.subplots(1, 2, figsize=(12, 4)) # создаём фигуру с 1 строкой и 2 графиками
# Первый subplot: гистограмма
ax[0].hist(data, bins=20, color="skyblue", edgecolor="black") # рисуем гистограмму
ax[0].set_title("Гистограмма") # заголовок графика
ax[0].set_xlabel("Значения") # подпись оси X
ax[0].set_ylabel("Частота") # подпись оси Y
ax[0].grid(True) # включаем сетку
# Второй subplot: линейный график
ax[1].plot(x, y, label="sin(x)", color="red") # рисуем линию sin(x)
ax[1].set_xlim(0, 12) # ограничение по оси X
ax[1].set_ylim(-2, 2) # ограничение по оси Y
ax[1].set_xticks([0,2,4,6,8,10]) # задаём кастомные тики по X
ax[1].set_yticks([-2,-1,0,1,2]) # задаём кастомные тики по Y
ax[1].set_xlabel("Ось X") # подпись оси X
ax[1].set_ylabel("Ось Y") # подпись оси Y
ax[1].set_title("Линейный график") # заголовок графика
ax[1].legend() # выводим легенду
ax[1].grid(True) # включаем сетку
Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Записки C3PO
У Ленни вышла статья где рассказывается про то, почему AI продукты должны иметь другой цикл разработки. Авторы показали фреймворк CC/CD.
TLDR: как писал много раз ранее, rolling updates с эскалацией сложности системы и evals для оценки технического качества.
Две фундаментальные проблемы AI-продуктов:
1. Недетерминированность - пользователи пишут что угодно вместо нажатия строго определенных заранее кнопок, система отвечает по-разному на одинаковые запросы. Классический QA тут не работает.
2. Компромисс между агентностью и контролем - чем больше автономии даешь ИИ, тем меньше контроля остается у людей.
Что такое CC/CD:
Continuous Development:
- Разбиваем большую цель на версии с растущей автономией (v1: AI-раб → v3: AI-коллега)
- Настраиваем простейшее приложение с логированием всего подряд и возможностью передачи контроля человеку
- Проектируем evals для измерения качества
Continuous Calibration:
- Запускаем на небольшой группе пользователей
- Анализируем реальные данные и паттерны фейлов
- Итеративно фиксим на основе данных
Пример из жизни - автоматизация саппорта:
- v1: Только роутинг тикетов по отделам
- v2: Предложение решений на основе инструкций и/или базы знаний
- v3: Автономное решение с эскалацией сложных кейсов до человека
Главный принцип - не давать ИИ полную автономию сразу. Система должна заслужить доверие через постепенное увеличение ответственности и доказательство надежности на каждом этапе. Это как онбординг нового сотрудника. Сначала простые задачи, потом постепенное расширение полномочий по мере накопления доверия.
По факту, это формализация того, что мы и так делаем в команде с нашими ассистентами и другими ИИ продуктами. Начинаем с простых сценариев, постепенно расширяем полномочия, мониторим каждый чих через evals, много бенчмаркинга.
TLDR: как писал много раз ранее, rolling updates с эскалацией сложности системы и evals для оценки технического качества.
Две фундаментальные проблемы AI-продуктов:
1. Недетерминированность - пользователи пишут что угодно вместо нажатия строго определенных заранее кнопок, система отвечает по-разному на одинаковые запросы. Классический QA тут не работает.
2. Компромисс между агентностью и контролем - чем больше автономии даешь ИИ, тем меньше контроля остается у людей.
Что такое CC/CD:
Continuous Development:
- Разбиваем большую цель на версии с растущей автономией (v1: AI-раб → v3: AI-коллега)
- Настраиваем простейшее приложение с логированием всего подряд и возможностью передачи контроля человеку
- Проектируем evals для измерения качества
Continuous Calibration:
- Запускаем на небольшой группе пользователей
- Анализируем реальные данные и паттерны фейлов
- Итеративно фиксим на основе данных
Пример из жизни - автоматизация саппорта:
- v1: Только роутинг тикетов по отделам
- v2: Предложение решений на основе инструкций и/или базы знаний
- v3: Автономное решение с эскалацией сложных кейсов до человека
Главный принцип - не давать ИИ полную автономию сразу. Система должна заслужить доверие через постепенное увеличение ответственности и доказательство надежности на каждом этапе. Это как онбординг нового сотрудника. Сначала простые задачи, потом постепенное расширение полномочий по мере накопления доверия.
По факту, это формализация того, что мы и так делаем в команде с нашими ассистентами и другими ИИ продуктами. Начинаем с простых сценариев, постепенно расширяем полномочия, мониторим каждый чих через evals, много бенчмаркинга.
Lennysnewsletter
Why your AI product needs a different development lifecycle
Introducing the Continuous Calibration/Continuous Development (CC/CD) framework
Forwarded from Sinекура
Современные LLM, даже рассуждающие, всё равно очень плохи в алгоритмических задачах. И вот, кажется, намечается прогресс: Hierarchical Reasoning Model (HRM), в которой друг с другом взаимодействуют две рекуррентные сети на двух уровнях, с жалкими 27 миллионами параметров обошла системы в тысячи раз больше на задачах, требующих глубокого логического мышления. Как у неё это получилось, и может ли это совершить новую мини-революцию в AI? Давайте разберёмся...
Hierarchical Reasoning Model: как 27М параметров решают судоку и ARC-AGI
(Пост довольно большой, так что приведу тут только введение, дальше читайте по ссылке.)
Возможности современных LLM слегка парадоксальны: модели, которые пишут симфонии и объясняют квантовую хромодинамику, не могут решить судоку уровня "эксперт". На подобного рода алгоритмических головоломках точность даже лучших LLM в мире стремится к нулю.
Это не баг, а фундаментальное ограничение архитектуры. Вспомните базовый курс алгоритмов (или менее базовый курс теории сложности, если у вас такой был): есть задачи класса P (решаемые за полиномиальное время), а есть задачи, решаемые схемами постоянной глубины (AC⁰). Трансформеры, при всей их мощи, застряли во втором классе, ведь у них фиксированная и не слишком большая глубина.
Представьте это так: вам дают лабиринт и просят найти выход. Это несложно, но есть нюанс: смотреть на лабиринт можно ровно три секунды, вне зависимости от того, это лабиринт 5×5 или 500×500. Именно так работают современные LLM — у них фиксированное число слоёв (обычно несколько десятков), через которые проходит информация. Миллиарды и триллионы параметров относятся к ширине обработки (числу весов в каждом слое), а не к глубине мышления (числу слоёв).
Да, начиная с семейства OpenAI o1 у нас есть “рассуждающие” модели, которые могут думать долго. Но это ведь на самом деле “костыль”: они порождают промежуточные токены, эмулируя цикл через текст. Честно говоря, подозреваю, что для самой LLM это как программировать на Brainfuck — технически возможно, но мучительно неэффективно. Представьте, например, что вам нужно решить судоку с такими ограничениями:
— смотреть на картинку можно две секунды,
— потом нужно записать обычными словами на русском языке то, что вы хотите запомнить,
— и потом вы уходите и возвращаетесь через пару дней (полностью “очистив контекст”), получая только свои предыдущие записи на естественном языке плюс ещё две секунды на анализ самой задачи.
Примерно так современные LLM должны решать алгоритмические задачи — так что кажется неудивительным, что они это очень плохо делают!
И вот Wang et al. (2025) предлагают архитектуру Hierarchical Reasoning Model (HRM), которая, кажется, умеет думать нужное время естественным образом... Как у них это получилось?
Hierarchical Reasoning Model: как 27М параметров решают судоку и ARC-AGI
(Пост довольно большой, так что приведу тут только введение, дальше читайте по ссылке.)
Возможности современных LLM слегка парадоксальны: модели, которые пишут симфонии и объясняют квантовую хромодинамику, не могут решить судоку уровня "эксперт". На подобного рода алгоритмических головоломках точность даже лучших LLM в мире стремится к нулю.
Это не баг, а фундаментальное ограничение архитектуры. Вспомните базовый курс алгоритмов (или менее базовый курс теории сложности, если у вас такой был): есть задачи класса P (решаемые за полиномиальное время), а есть задачи, решаемые схемами постоянной глубины (AC⁰). Трансформеры, при всей их мощи, застряли во втором классе, ведь у них фиксированная и не слишком большая глубина.
Представьте это так: вам дают лабиринт и просят найти выход. Это несложно, но есть нюанс: смотреть на лабиринт можно ровно три секунды, вне зависимости от того, это лабиринт 5×5 или 500×500. Именно так работают современные LLM — у них фиксированное число слоёв (обычно несколько десятков), через которые проходит информация. Миллиарды и триллионы параметров относятся к ширине обработки (числу весов в каждом слое), а не к глубине мышления (числу слоёв).
Да, начиная с семейства OpenAI o1 у нас есть “рассуждающие” модели, которые могут думать долго. Но это ведь на самом деле “костыль”: они порождают промежуточные токены, эмулируя цикл через текст. Честно говоря, подозреваю, что для самой LLM это как программировать на Brainfuck — технически возможно, но мучительно неэффективно. Представьте, например, что вам нужно решить судоку с такими ограничениями:
— смотреть на картинку можно две секунды,
— потом нужно записать обычными словами на русском языке то, что вы хотите запомнить,
— и потом вы уходите и возвращаетесь через пару дней (полностью “очистив контекст”), получая только свои предыдущие записи на естественном языке плюс ещё две секунды на анализ самой задачи.
Примерно так современные LLM должны решать алгоритмические задачи — так что кажется неудивительным, что они это очень плохо делают!
И вот Wang et al. (2025) предлагают архитектуру Hierarchical Reasoning Model (HRM), которая, кажется, умеет думать нужное время естественным образом... Как у них это получилось?
Forwarded from Applied AI by David
Как сэкономить 84 350 долларов в год
Столько стоит MBA (программа Master of Business Administration) в MIT, а также огромное количество времени. Я ничего не плачу и получаю персональные рекомендации по улучшению процессов в моей жизни и моих бизнесах. Ниже расскажу как, но перед этим отзывы:
CTO: "Блин это лучшее обучение которое у меня когда-либо было"
CAIO: "Я занимаюсь уже всю неделю не отрываясь"
Остальная команда: 100/10
Друг-предприниматель: "Сделал себе, то что я получаю пользу в контексте моих проектов сразу зарабатывает мне деньги"
Знакомая, окончившая MBA: "эх если бы такое было в моё время я бы уже в 16 запускала первый проект"
Мой друг 160iq+: не стал пробовать, слишком гигантское эго
TLDR РЕЦЕПТ
0. Открываем любую GPT
1. You will become what you hate about yourself — "Я хочу научиться Х, сделай мне тест моего уровня для оценки навыков, чтобы я смог Y"
2. Context is the king — В настройках персонализации chatgpt / claude / cursorrules пишем 300+ слов о себе, опыте, проблемах, ресурсах, проблеме и цели
3. Make yourself 6-monthly over-detailed, over-personalized, gpt-understandable plan — В несколько промптов создаем себе план обучения на 2000+ уроков, которые погрузят нас в каждую тему
4. Корректируем под себя промпт "плана урока"
5-2004. Follow it, make a schedule — начинаем каждый день со стандартного "план урока"+"промпт-тема"
Try now or forget forever - 100% есть фундаментальные навыки, в котором ты - лох, либо можешь перейти на следующую парадигму:
- management
- product
- sales
- networking
- processes
- your tech domain
Накидайте 10 огонечков и скину свои промпты.
Моей команде: буду благодарен если напишите свой опыт в комментах
@aigov2
Столько стоит MBA (программа Master of Business Administration) в MIT, а также огромное количество времени. Я ничего не плачу и получаю персональные рекомендации по улучшению процессов в моей жизни и моих бизнесах. Ниже расскажу как, но перед этим отзывы:
CTO: "Блин это лучшее обучение которое у меня когда-либо было"
CAIO: "Я занимаюсь уже всю неделю не отрываясь"
Остальная команда: 100/10
Друг-предприниматель: "Сделал себе, то что я получаю пользу в контексте моих проектов сразу зарабатывает мне деньги"
Знакомая, окончившая MBA: "эх если бы такое было в моё время я бы уже в 16 запускала первый проект"
Мой друг 160iq+: не стал пробовать, слишком гигантское эго
TLDR РЕЦЕПТ
1. You will become what you hate about yourself — "Я хочу научиться Х, сделай мне тест моего уровня для оценки навыков, чтобы я смог Y"
2. Context is the king — В настройках персонализации chatgpt / claude / cursorrules пишем 300+ слов о себе, опыте, проблемах, ресурсах, проблеме и цели
3. Make yourself 6-monthly over-detailed, over-personalized, gpt-understandable plan — В несколько промптов создаем себе план обучения на 2000+ уроков, которые погрузят нас в каждую тему
4. Корректируем под себя промпт "плана урока"
5-2004. Follow it, make a schedule — начинаем каждый день со стандартного "план урока"+"промпт-тема"
Try now or forget forever - 100% есть фундаментальные навыки, в котором ты - лох, либо можешь перейти на следующую парадигму:
- management
- product
- sales
- networking
- processes
- your tech domain
Накидайте 10 огонечков и скину свои промпты.
Моей команде: буду благодарен если напишите свой опыт в комментах
@aigov2
Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
База собесов про LLM - RAG😎
Продолжение рубрики с прохождением собесов, на очереди одна из самых частых тем в моей работе - RAG.
1️⃣ Как работает RAG?
RAG (Retrieval-Augmented Generation) — это метод, позволяющий большим языковым моделям (LLM) улучшать качество ответов за счет использования актуальной информации из внешних источников, таких как базы данных, документы или API. Этот подход снижает вероятность ошибок модели (галлюцинаций) и обеспечивает более точные и контекстуально обоснованные ответы, даже если сама модель обучалась на устаревших данных.
Концептуально можно выделить несколько ключевых компонентов и этапов, которые обеспечивают работу RAGа:
1. Ввод пользовательского запроса.
2. Запрос преобразуется в векторное представление (эмбеддинг), которое математически описывает смысл запроса. Обычно используется предобученная модель для генерации эмбеддингов.
3. Далее вектор запроса сравнивается с хранящимися в базе векторами для поиска наиболее релевантных данных. В качестве баз для хранения часто используют Qdrant, Pinecone или Weaviate.
4. Из базы данных извлекаются фрагменты текста или документов, которые лучше всего соответствуют запросу. Эти данные формируют контекст для ответа.
5. LLM получает извлеченный контекст и запрос. Из этих данных она генерирует ответ, который после возвращается пользователю.
2️⃣ В чём преимущества использования системы RAG?
Главное преимущество использования RAG - скорость поиска, так как ни регулярки, ни LLM не решает этот вопрос лучше. Но придется тестить много разных моделей для эмбеддингов, и четко оценивать различные метрики расстояния между запросом и документом.
3️⃣ Когда лучше использовать Fine-tuning вместо RAG?
Базовый ответ на этот вопрос, когда не нужен никакой сильный поиск, потому что зачастую после использования RAG системы все равно нужен запрос в LLM для нормального(человечного) ответа. Все равно RAG требует некоторых вычислительных мощностей, поэтому если можно сократить путь, то всего это делайте.
4️⃣ Типы RAG систем
Sparse Retrieval (BM25, TF-IDF)
BM25 основан на методе оценки ключевых слов TF-IDF(Term-Frequency Inverse-Document Frequency), используя модель двоичной независимости из расчета IDF и добавляя штраф за нормализацию, который взвешивает длину документа относительно средней длины всех документов в базе данных.
Чаще всего этот метод используют для реализации быстрых решений, так как он прост в реализации, имеет хорошую скорость и также можно точно настроить под задачу. Но дальше выходят основные ограничения метода: не учитываются семантические свящи между словами и плохая восприимчивость к синонимии и контексту.
Ноутбук для использования
Dense Retrieval(vector embeddings + ANN)
Dense Retrieval сочетает в себе два ключевых компонента:
1. Векторные эмбеддинги для представления запросов и документов в едином векторном пространстве
2. ANN - алгоритмы приближенного поиска ближайших соседей для выборки ближайших векторов
Плотные вектора подходят намного больше для поиска по контексту, но у них возникают проблемы с ключевыми словами. Поэтому финальным решением чаще всего становится Hybrid Retrieval.
Hybrid Retrieval (комбинация sparse + dense)
Хотя dense ретриверы, основанные на сложных моделях встраивания, хорошо понимают семантические связи и намерения пользователя, они иногда могут промахиваться по запросам, требующим точных лексических совпадений. Например, модель может уловить общую тему запроса, но не отдать приоритет документам, содержащим очень конкретный, но менее распространенный код продукта или технический термин, упомянутый пользователем. Напротив, традиционные sparse ретриверы, такие как BM25, отлично находят эти точные термины, но им не хватает более широкого контекстного понимания для поиска семантически похожего, но лексически разного контента. Они работают с ключевыми словами, которые, несмотря на точность, могут быть нестабильны при работе с синонимами, парафразами или сложными запросами на естественном языке. Сочетание плотных и разреженных методов поиска обеспечивает ряд преимуществ для вашей системы RAG
Ноутбук с примером
Продолжение рубрики с прохождением собесов, на очереди одна из самых частых тем в моей работе - RAG.
RAG (Retrieval-Augmented Generation) — это метод, позволяющий большим языковым моделям (LLM) улучшать качество ответов за счет использования актуальной информации из внешних источников, таких как базы данных, документы или API. Этот подход снижает вероятность ошибок модели (галлюцинаций) и обеспечивает более точные и контекстуально обоснованные ответы, даже если сама модель обучалась на устаревших данных.
Концептуально можно выделить несколько ключевых компонентов и этапов, которые обеспечивают работу RAGа:
1. Ввод пользовательского запроса.
2. Запрос преобразуется в векторное представление (эмбеддинг), которое математически описывает смысл запроса. Обычно используется предобученная модель для генерации эмбеддингов.
3. Далее вектор запроса сравнивается с хранящимися в базе векторами для поиска наиболее релевантных данных. В качестве баз для хранения часто используют Qdrant, Pinecone или Weaviate.
4. Из базы данных извлекаются фрагменты текста или документов, которые лучше всего соответствуют запросу. Эти данные формируют контекст для ответа.
5. LLM получает извлеченный контекст и запрос. Из этих данных она генерирует ответ, который после возвращается пользователю.
Главное преимущество использования RAG - скорость поиска, так как ни регулярки, ни LLM не решает этот вопрос лучше. Но придется тестить много разных моделей для эмбеддингов, и четко оценивать различные метрики расстояния между запросом и документом.
Базовый ответ на этот вопрос, когда не нужен никакой сильный поиск, потому что зачастую после использования RAG системы все равно нужен запрос в LLM для нормального(человечного) ответа. Все равно RAG требует некоторых вычислительных мощностей, поэтому если можно сократить путь, то всего это делайте.
Sparse Retrieval (BM25, TF-IDF)
BM25 основан на методе оценки ключевых слов TF-IDF(Term-Frequency Inverse-Document Frequency), используя модель двоичной независимости из расчета IDF и добавляя штраф за нормализацию, который взвешивает длину документа относительно средней длины всех документов в базе данных.
Чаще всего этот метод используют для реализации быстрых решений, так как он прост в реализации, имеет хорошую скорость и также можно точно настроить под задачу. Но дальше выходят основные ограничения метода: не учитываются семантические свящи между словами и плохая восприимчивость к синонимии и контексту.
Ноутбук для использования
Dense Retrieval(vector embeddings + ANN)
Dense Retrieval сочетает в себе два ключевых компонента:
1. Векторные эмбеддинги для представления запросов и документов в едином векторном пространстве
2. ANN - алгоритмы приближенного поиска ближайших соседей для выборки ближайших векторов
Плотные вектора подходят намного больше для поиска по контексту, но у них возникают проблемы с ключевыми словами. Поэтому финальным решением чаще всего становится Hybrid Retrieval.
Hybrid Retrieval (комбинация sparse + dense)
Хотя dense ретриверы, основанные на сложных моделях встраивания, хорошо понимают семантические связи и намерения пользователя, они иногда могут промахиваться по запросам, требующим точных лексических совпадений. Например, модель может уловить общую тему запроса, но не отдать приоритет документам, содержащим очень конкретный, но менее распространенный код продукта или технический термин, упомянутый пользователем. Напротив, традиционные sparse ретриверы, такие как BM25, отлично находят эти точные термины, но им не хватает более широкого контекстного понимания для поиска семантически похожего, но лексически разного контента. Они работают с ключевыми словами, которые, несмотря на точность, могут быть нестабильны при работе с синонимами, парафразами или сложными запросами на естественном языке. Сочетание плотных и разреженных методов поиска обеспечивает ряд преимуществ для вашей системы RAG
Ноутбук с примером
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Quant Valerian
Три уровня управления командами
Сегодня я вижу три разных уровня, на которых руководитель может управлять командами и людьми. Традиционно все начинают, и об этом есть много постов, с директивного управления. Свежеиспеченные тимлиды назначают задачки каждому сотруднику индивидуально, на планировании детально смотрят каждый тикет из бэклога, чтобы понять, стоит ли его брать, ежедневно справляются у сотрудников о статусах по каждой задаче — главное, всё это на ручном приводе.
В определенный момент такая схема может перестать масштабироваться. Часто это происходит при переходе на уровень управления тимлидами. В этот момент появляются регламенты и процессы. Руководители уже больше доверяются какому-нибудь управленческому фреймворку (Kanban, RUP etc.), разрабатывают схему "объективной" приоритезации (CD3, RICE etc.), обращают внимание уже только на некоторые задачи (особо важные, выпадающие по срокам etc.), вводят какие-то правила, как сотрудникам брать новые задачи, критерии приемки готовых, всякие DOR/DOD etc.
Регламенты и процессы отлично работают и, в общем и целом, нормально масштабируются. И на этом уровне любой опытный руководитель может остановиться и работать бесконечно долго. Однако высшим мастерством управления, позволяющим максимально раскрываться сотрудникам, дающим больше мотивации, смысла и вообще жизни людям на работе, кроме того, наиболее устойчивым к ошибкам, потерям и автобусным инцидентам, является управление на уровне культуры.
Это уже не просто регламенты, чек-листы и правила. Это создание среды, в которой каждый сотрудник понимает, что и зачем он делает в каждый момент времени. Это система, в которой само окружение заставляет сотрудников думать о решении проблемы, а не делании таски. То есть мы превращаем поточное ремесло в акт творения. У каждого человека есть смысл. В таком окружении каждый понимает не только свой уголок, но и чем заняты люди вокруг, как это всё соединяется, синтезируется в конечную ценность. Каждый может заметить, что вы делаете фигню. Каждый может предложить, как сделать эффективнее. Каждый понимает, не на уровне регламента, а на уровне смысла, какую задачу брать следующей. Каждый заметит, подсветит, подключится при необходимости, если какая-то задача провисла.
Встречали ли вы когда-нибудь команды, управляемые через культуру?
Сегодня я вижу три разных уровня, на которых руководитель может управлять командами и людьми. Традиционно все начинают, и об этом есть много постов, с директивного управления. Свежеиспеченные тимлиды назначают задачки каждому сотруднику индивидуально, на планировании детально смотрят каждый тикет из бэклога, чтобы понять, стоит ли его брать, ежедневно справляются у сотрудников о статусах по каждой задаче — главное, всё это на ручном приводе.
В определенный момент такая схема может перестать масштабироваться. Часто это происходит при переходе на уровень управления тимлидами. В этот момент появляются регламенты и процессы. Руководители уже больше доверяются какому-нибудь управленческому фреймворку (Kanban, RUP etc.), разрабатывают схему "объективной" приоритезации (CD3, RICE etc.), обращают внимание уже только на некоторые задачи (особо важные, выпадающие по срокам etc.), вводят какие-то правила, как сотрудникам брать новые задачи, критерии приемки готовых, всякие DOR/DOD etc.
Регламенты и процессы отлично работают и, в общем и целом, нормально масштабируются. И на этом уровне любой опытный руководитель может остановиться и работать бесконечно долго. Однако высшим мастерством управления, позволяющим максимально раскрываться сотрудникам, дающим больше мотивации, смысла и вообще жизни людям на работе, кроме того, наиболее устойчивым к ошибкам, потерям и автобусным инцидентам, является управление на уровне культуры.
Это уже не просто регламенты, чек-листы и правила. Это создание среды, в которой каждый сотрудник понимает, что и зачем он делает в каждый момент времени. Это система, в которой само окружение заставляет сотрудников думать о решении проблемы, а не делании таски. То есть мы превращаем поточное ремесло в акт творения. У каждого человека есть смысл. В таком окружении каждый понимает не только свой уголок, но и чем заняты люди вокруг, как это всё соединяется, синтезируется в конечную ценность. Каждый может заметить, что вы делаете фигню. Каждый может предложить, как сделать эффективнее. Каждый понимает, не на уровне регламента, а на уровне смысла, какую задачу брать следующей. Каждый заметит, подсветит, подключится при необходимости, если какая-то задача провисла.
Встречали ли вы когда-нибудь команды, управляемые через культуру?
Forwarded from Artem Ryblov’s Data Science Weekly
Problem Solving with Algorithms and Data Structures using Python by Brad Miller and David Ranum, Luther College
This textbook is about computer science. It is also about Python. However, there is much more.
The study of algorithms and data structures is central to understanding what computer science is all about. Learning computer science is not unlike learning any other type of difficult subject matter. The only way to be successful is through deliberate and incremental exposure to the fundamental ideas. A beginning computer scientist needs practice so that there is a thorough understanding before continuing on to the more complex parts of the curriculum. In addition, a beginner needs to be given the opportunity to be successful and gain confidence.
This textbook is designed to serve as a text for a first course on data structures and algorithms, typically taught as the second course in the computer science curriculum. Even though the second course is considered more advanced than the first course, this book assumes you are beginners at this level. You may still be struggling with some of the basic ideas and skills from a first computer science course and yet be ready to further explore the discipline and continue to practice problem solving.
Authors cover abstract data types and data structures, writing algorithms, and solving problems. They look at a number of data structures and solve classic problems that arise. The tools and techniques that you learn here will be applied over and over as you continue your study of computer science.
Links:
- Site
- Book
Navigational hashtags: #armbooks #armcourses
General hashtags: #python #algorithms #datastructures #programming #cs #computerscience
@data_science_weekly
This textbook is about computer science. It is also about Python. However, there is much more.
The study of algorithms and data structures is central to understanding what computer science is all about. Learning computer science is not unlike learning any other type of difficult subject matter. The only way to be successful is through deliberate and incremental exposure to the fundamental ideas. A beginning computer scientist needs practice so that there is a thorough understanding before continuing on to the more complex parts of the curriculum. In addition, a beginner needs to be given the opportunity to be successful and gain confidence.
This textbook is designed to serve as a text for a first course on data structures and algorithms, typically taught as the second course in the computer science curriculum. Even though the second course is considered more advanced than the first course, this book assumes you are beginners at this level. You may still be struggling with some of the basic ideas and skills from a first computer science course and yet be ready to further explore the discipline and continue to practice problem solving.
Authors cover abstract data types and data structures, writing algorithms, and solving problems. They look at a number of data structures and solve classic problems that arise. The tools and techniques that you learn here will be applied over and over as you continue your study of computer science.
Links:
- Site
- Book
Navigational hashtags: #armbooks #armcourses
General hashtags: #python #algorithms #datastructures #programming #cs #computerscience
@data_science_weekly
Forwarded from Тимлид Очевидность | Евгений Антонов
Онбординг и обучение руководителей
Я неоднократно видел один и тот же паттерн повышения или из линейного работника руками в тимлида, или из тимлида в тимлида тимлидов, в ходе которого люди оставались наедине с этим повышением.
Им говорят, что они уже взрослые и сениорные специалисты, и от них ожидается, что те сами во всем разберутся, желательно не сбавляя темпа, ведь все бегут и мы бежим.
Ну а правда, опытные же!
А вот я считаю, что не опытные. Ну вернее, опытные, но в другом.
В первом случае человек работал руками, а потом стал руководителем таких работяг. Он не делал этого раньше, не умеет это делать, и ему мало кто говорит, чего от него ждут, что подтянуть, где уже хорошо. А уж как писать код 80% времени и оставшиеся 80% времени заниматься менеджментом, точно никто не рассказывает, но порой требуют 🙂
В случае перехода из тимлидов в мидл-менеджмент ситуация ненамного лучше. Одно дело напрямую руководить линейными работниками, а другое дело руководить руководителями, и на конечные команды влиять уже через них.
Вот и выходит, что мы получаем в какой-то степени джунов тимлидов и мидл-менеджеров, которых оставляют наедине с этими заботами, даже порой не закладывая просадку по результатам на время адаптации.
А что же делать?
Очередная порция очевидных советов от Тимлида Очевидность. Очевидные вещи, но почему-то не всегда реализуемые 🙁
- Новому уровню руководства можно обучать заранее. В ряде случаев вы заранее знаете, какого человека подвинете наверх, и еще до этого самого продвижения его можно отправить на обучение. Где-то бывают курсы внутри компании, где-то покупают внешние курсы, где-то нет на это денег, но более опытные руководители собирают и готовят материалы, проводят какое-никакое обучение.
Смешная история была с одним моим знакомым, которому в компании сказали, что он будет тимлидом через N месяцев, но ему нельзя посмотреть обучение для тимлидов, потому что он еще не тимлид. И получилось, что он просто ждал, когда разгорится огонь, и вот только когда уже полыхнуло, ему дали огнетушитель.
Вот повысят, тогда и приходите.
- Если всё быстро и внезапно, то хотя бы можно заложить время на адаптацию. Я понимаю, что сроки горят, бизнес крутится, деньги мутятся. Но если со старта в жернова на полной скорости закручивать свежих руководителей, то можно получить довольно скоро уже выжатых и пожалевших о своем решении людей.
Хотя, наверное, это не остановит компании с девизом «слабаки нам не нужны», но это уже совсем другая история.
- Руководитель промоутируемого должен вкладываться в адаптацию. Вы же не запускаете джуна разработчика в проект со словами «вот рутовый пароль от базы, вот так деплоить в прод, давай, дальше сам разберешься». Это и про менторинг, и про явное проговаривание ожиданий, планов, и про погружение в контекст нового подразделения и продукта.
А если руководитель этого не понимает, то советую почитать книгу «Первые 90 дней. Стратегии успеха для новых лидеров всех уровней». Там подробно говорится о важности адаптации руководителя на новой позиции.
- Кто-то делает у себя внутри компании кадровый резерв и организует что-то типа школы тимлидов для желающих и заинтересованных, чтобы потом закрывать возникающие вакансии быстро изнутри уже готовыми к этому людьми.
Итог
Чтобы пореже жаловаться, что из хорошего инженера сделали плохого тимлида, можно и нужно заниматься обучением и адаптацией руководителей. Хотя бы на первые две ступени.
Говорят, дальше уже примерно понятно идет, без такого серьезного сдвига парадигмы.
Тимлиды и мидл-менеджеры, поделитесь своим опытом о том, как вас онбордили и обучали при повышении.
Я неоднократно видел один и тот же паттерн повышения или из линейного работника руками в тимлида, или из тимлида в тимлида тимлидов, в ходе которого люди оставались наедине с этим повышением.
Им говорят, что они уже взрослые и сениорные специалисты, и от них ожидается, что те сами во всем разберутся, желательно не сбавляя темпа, ведь все бегут и мы бежим.
Ну а правда, опытные же!
А вот я считаю, что не опытные. Ну вернее, опытные, но в другом.
В первом случае человек работал руками, а потом стал руководителем таких работяг. Он не делал этого раньше, не умеет это делать, и ему мало кто говорит, чего от него ждут, что подтянуть, где уже хорошо. А уж как писать код 80% времени и оставшиеся 80% времени заниматься менеджментом, точно никто не рассказывает, но порой требуют 🙂
В случае перехода из тимлидов в мидл-менеджмент ситуация ненамного лучше. Одно дело напрямую руководить линейными работниками, а другое дело руководить руководителями, и на конечные команды влиять уже через них.
Вот и выходит, что мы получаем в какой-то степени джунов тимлидов и мидл-менеджеров, которых оставляют наедине с этими заботами, даже порой не закладывая просадку по результатам на время адаптации.
А что же делать?
Очередная порция очевидных советов от Тимлида Очевидность. Очевидные вещи, но почему-то не всегда реализуемые 🙁
- Новому уровню руководства можно обучать заранее. В ряде случаев вы заранее знаете, какого человека подвинете наверх, и еще до этого самого продвижения его можно отправить на обучение. Где-то бывают курсы внутри компании, где-то покупают внешние курсы, где-то нет на это денег, но более опытные руководители собирают и готовят материалы, проводят какое-никакое обучение.
Смешная история была с одним моим знакомым, которому в компании сказали, что он будет тимлидом через N месяцев, но ему нельзя посмотреть обучение для тимлидов, потому что он еще не тимлид. И получилось, что он просто ждал, когда разгорится огонь, и вот только когда уже полыхнуло, ему дали огнетушитель.
Вот повысят, тогда и приходите.
- Если всё быстро и внезапно, то хотя бы можно заложить время на адаптацию. Я понимаю, что сроки горят, бизнес крутится, деньги мутятся. Но если со старта в жернова на полной скорости закручивать свежих руководителей, то можно получить довольно скоро уже выжатых и пожалевших о своем решении людей.
Хотя, наверное, это не остановит компании с девизом «слабаки нам не нужны», но это уже совсем другая история.
- Руководитель промоутируемого должен вкладываться в адаптацию. Вы же не запускаете джуна разработчика в проект со словами «вот рутовый пароль от базы, вот так деплоить в прод, давай, дальше сам разберешься». Это и про менторинг, и про явное проговаривание ожиданий, планов, и про погружение в контекст нового подразделения и продукта.
А если руководитель этого не понимает, то советую почитать книгу «Первые 90 дней. Стратегии успеха для новых лидеров всех уровней». Там подробно говорится о важности адаптации руководителя на новой позиции.
- Кто-то делает у себя внутри компании кадровый резерв и организует что-то типа школы тимлидов для желающих и заинтересованных, чтобы потом закрывать возникающие вакансии быстро изнутри уже готовыми к этому людьми.
Итог
Чтобы пореже жаловаться, что из хорошего инженера сделали плохого тимлида, можно и нужно заниматься обучением и адаптацией руководителей. Хотя бы на первые две ступени.
Говорят, дальше уже примерно понятно идет, без такого серьезного сдвига парадигмы.
Тимлиды и мидл-менеджеры, поделитесь своим опытом о том, как вас онбордили и обучали при повышении.
Forwarded from Refat Talks: Tech & AI
Context Rot (гниение контекста)
Ребята из Chroma провели масштабное исследование (пост, ролик) и выяснили неприятную правду - все современные LLM страдают от "гниения контекста". И это не баг, а системная проблема текущих архитектур.
Провели контролируемые эксперименты на 18 моделях, за основу взяли тест Needle in a Haystack, но варьировали семантическое сходство между "иглой" и вопросом и добавляли отвлекающие факторы (distractors) + использовали дополнительные тесты типа LongMemEval.
Главный вывод: производительность LLM деградирует нелинейно и непредсказуемо с увеличением длины контекста.
Не то что бы это сюрприз.
Но что еще интересного:
- Когда вопрос и ответ связаны не лексически, а семантически (требуется понимание смысла), производительность падает значительно быстрее с увеличением контекста (кстати, один из способов улучшить это - делать query expansion)
- Thinking modes немного помогают, но не решают проблему
- Парадокс структуры: Модели работают хуже (на 10-15%) на логически структурированном тексте, чем на случайно перемешанных предложениях!
Практические выводы:
1. Context Engineering критически важен - не только наличие информации в контексте, но и то, КАК она представлена, сильно влияет на результат
2. Нельзя полагаться на заявленные длины контекста - даже если модель поддерживает 1M токенов, это не значит, что она будет эффективно работать с такими объемами (кстати, классный был бенч от Nvidia RULER, не нашел ничего подобного для новых моделей).
3. Замечали как память ChatGPT иногда делает его тупее и рассеяннее? Это оно (поэтому я выключаю память по-умолчанию)
4. Популярный Needle in a Haystack - так себе бенчмарк сам по себе, тестируется слишком примитивно
5. Модели лучше помнят то, что в начале и конце контекста. Критически важную инфу размещайте там.
Про Context Engineering мы обязательно поговорим в отдельном посте, тут помимо самих техник важно понимать что есть два аспекта:
- внутренний: определение того, что должно быть в контексте прямо сейчас (в конкретном вызове LLM)
- внешний: улучшение со временем в заполнении контекста только релевантной информацией (что именно оставлять агенту во время оркестрации, как правильно хранить историю чата, что помнить о пользователе и тд).
И главный вывод простой: относитесь к контексту как к дорогому и ограниченному ресурсу. Не потому что токены стоят денег (хотя и это тоже), а потому что каждый лишний токен снижает вероятность того, что модель правильно поймет вашу задачу.
Ребята из Chroma провели масштабное исследование (пост, ролик) и выяснили неприятную правду - все современные LLM страдают от "гниения контекста". И это не баг, а системная проблема текущих архитектур.
Провели контролируемые эксперименты на 18 моделях, за основу взяли тест Needle in a Haystack, но варьировали семантическое сходство между "иглой" и вопросом и добавляли отвлекающие факторы (distractors) + использовали дополнительные тесты типа LongMemEval.
Главный вывод: производительность LLM деградирует нелинейно и непредсказуемо с увеличением длины контекста.
Не то что бы это сюрприз.
Но что еще интересного:
- Когда вопрос и ответ связаны не лексически, а семантически (требуется понимание смысла), производительность падает значительно быстрее с увеличением контекста (кстати, один из способов улучшить это - делать query expansion)
- Thinking modes немного помогают, но не решают проблему
- Парадокс структуры: Модели работают хуже (на 10-15%) на логически структурированном тексте, чем на случайно перемешанных предложениях!
Практические выводы:
1. Context Engineering критически важен - не только наличие информации в контексте, но и то, КАК она представлена, сильно влияет на результат
2. Нельзя полагаться на заявленные длины контекста - даже если модель поддерживает 1M токенов, это не значит, что она будет эффективно работать с такими объемами (кстати, классный был бенч от Nvidia RULER, не нашел ничего подобного для новых моделей).
3. Замечали как память ChatGPT иногда делает его тупее и рассеяннее? Это оно (поэтому я выключаю память по-умолчанию)
4. Популярный Needle in a Haystack - так себе бенчмарк сам по себе, тестируется слишком примитивно
5. Модели лучше помнят то, что в начале и конце контекста. Критически важную инфу размещайте там.
Про Context Engineering мы обязательно поговорим в отдельном посте, тут помимо самих техник важно понимать что есть два аспекта:
- внутренний: определение того, что должно быть в контексте прямо сейчас (в конкретном вызове LLM)
- внешний: улучшение со временем в заполнении контекста только релевантной информацией (что именно оставлять агенту во время оркестрации, как правильно хранить историю чата, что помнить о пользователе и тд).
И главный вывод простой: относитесь к контексту как к дорогому и ограниченному ресурсу. Не потому что токены стоят денег (хотя и это тоже), а потому что каждый лишний токен снижает вероятность того, что модель правильно поймет вашу задачу.