Forwarded from Заскуль питона (Data Science)
Seeing Statistic Theory
😡 Это то, с чего я начинал, когда начал копать в сторону аналитики данных и статистики в целом, так как понимание статистики и теории вероятностей давалось очень тяжело (начинал с курсов по статистике от Анатолия Карпова). Как понимание с оттачиванием практических примеров - кайф. Только нужно сразу закинуть пару примеров и решать в Python, например, без этого никак.
🤑 Сейчас я советую сразу присмотреться к курсу по статистике и теории вероятностей от ФЭН ВШЭ. Много практики, хорошо для общего понимания академической статистики и тервера. Будет тяжело, но на выходе получите помимо знаний, структуры особенный эффект после обучения.
♟ Если хотите, разберу относительной новый курс по прикладной статистике от ААА, делал анонс второй части тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Tensor Banana
Flux Redux x3 - смешиваем 3 картинки с указанием силы
Если кто не в курсе, Flux Redux - новая модель для создания вариаций картинки.
Базовый воркфлоу для Flux Redux (вариации по одной картинке) слишком негибкий, поэтому я его адаптировал. Я добавил указание силы для каждой картинки и для промпта. Теперь можно четко контролировать силу каждого фактора.
Рекомендации:
- в моем воркфлоу главная картинка всегда третья, у нее всегда почему-то самое большое влияние на результат, ставьте ей силу 1.0 или близкое значение.
- первая картинка по умолчанию выключена. Если вам надо - можете включить, но контролировать 3 картинки + промпт - сложнее, чем 2.
- Redux неплохо работает с лорами. Тестил на лоре на лицо.
- рекомендую выставлять большое конечное разрешение, например, 800x1400. При меньшем разрешении финальные картинки иногда могут не влезать по высоте, и объект будет обрезаться сверху. Предполагаю, что redux тренировали на разрешении 1400x1400.
- сила промпта также может быть задана, путем уменьшения финальной силы всех картинок. По умолчанию она стоит в 0.40. При 1.00 - промпт будет игнорироваться. При 0.00 - картинки будут игнорироваться.
- картинки на белом фоне проще интегрировать друг в друга.
- у меня там 2 лоры встроены с силой 0. выберите любые или удалите эти ноды если у вас вообще нет скачанных лор.
Все ноды доступны по умолчанию (кроме гуфов, но по умолчанию выключены). Ничего дополнительно устанавливать не надо, просто обновите comfyui (update_comfyui.bat) и перетащите воркфлоу.
Для работы Redux скачать, если не качали:
sigclip https://huggingface.co/Comfy-Org/sigclip_vision_384/blob/main/sigclip_vision_patch14_384.safetensors в папку models/clip_vision
FLUX.1-Redux https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev в папку models/style_models
flux dev, clip_l, t5_xxl, vae надеюсь у вас уже скачаны, если нет то: https://comfyanonymous.github.io/ComfyUI_examples/flux/
Redux x3 воркфлоу https://github.com/Mozer/comfy_stuff/blob/main/workflows/workflow_redux_x3_with_strength.png
Затестить онлайн: https://www.runninghub.ai/post/1860773217928441857
Если кто не в курсе, Flux Redux - новая модель для создания вариаций картинки.
Базовый воркфлоу для Flux Redux (вариации по одной картинке) слишком негибкий, поэтому я его адаптировал. Я добавил указание силы для каждой картинки и для промпта. Теперь можно четко контролировать силу каждого фактора.
Рекомендации:
- в моем воркфлоу главная картинка всегда третья, у нее всегда почему-то самое большое влияние на результат, ставьте ей силу 1.0 или близкое значение.
- первая картинка по умолчанию выключена. Если вам надо - можете включить, но контролировать 3 картинки + промпт - сложнее, чем 2.
- Redux неплохо работает с лорами. Тестил на лоре на лицо.
- рекомендую выставлять большое конечное разрешение, например, 800x1400. При меньшем разрешении финальные картинки иногда могут не влезать по высоте, и объект будет обрезаться сверху. Предполагаю, что redux тренировали на разрешении 1400x1400.
- сила промпта также может быть задана, путем уменьшения финальной силы всех картинок. По умолчанию она стоит в 0.40. При 1.00 - промпт будет игнорироваться. При 0.00 - картинки будут игнорироваться.
- картинки на белом фоне проще интегрировать друг в друга.
- у меня там 2 лоры встроены с силой 0. выберите любые или удалите эти ноды если у вас вообще нет скачанных лор.
Все ноды доступны по умолчанию (кроме гуфов, но по умолчанию выключены). Ничего дополнительно устанавливать не надо, просто обновите comfyui (update_comfyui.bat) и перетащите воркфлоу.
Для работы Redux скачать, если не качали:
sigclip https://huggingface.co/Comfy-Org/sigclip_vision_384/blob/main/sigclip_vision_patch14_384.safetensors в папку models/clip_vision
FLUX.1-Redux https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev в папку models/style_models
flux dev, clip_l, t5_xxl, vae надеюсь у вас уже скачаны, если нет то: https://comfyanonymous.github.io/ComfyUI_examples/flux/
Redux x3 воркфлоу https://github.com/Mozer/comfy_stuff/blob/main/workflows/workflow_redux_x3_with_strength.png
Затестить онлайн: https://www.runninghub.ai/post/1860773217928441857
Forwarded from rzv Data Engineering
#зачем_нужно
Проблемы и решения в очистке данных 4/4
🔶 Нормализация unicode символов
❔ Рассказать в следующем посте про colation настройки БД (или почему иногда сортировка одних и тех же данных может выдавать разный результат) ? :)
🔶 Конвертация часовых поясов
🔶 Обработка спецсимволов в текстовых полях
🔶 Приведение булевых значений к стандартному виду
❕Ну что, как тебе формат? Голосуй реактами и комментами, если хочешь больше такого
Проблемы и решения в очистке данных 4/4
🔶 Нормализация unicode символов
translate(column, 'áéíóúàèìòùãẽĩõũâêîôûäëïöüçñ', 'aeiouaeiouaeiouaeiouaeioucn')
regexp_replace(column, '[^\x00-\x7F]+', '') /* удаление не ASCII символов */
❔ Рассказать в следующем посте про colation настройки БД (или почему иногда сортировка одних и тех же данных может выдавать разный результат) ? :)
🔶 Конвертация часовых поясов
select timestampz_column at time zone 'Europe/Moscow'
coalesce(
try_cast(timestamp_column as timestamp with time zone),
timestamp_column::timestamp at time zone 'UTC'
) /* если не всегда указана временная зона */
🔶 Обработка спецсимволов в текстовых полях
regexp_replace(column, '[^a-zA-Z0-9\s]', '') /* только буквы, цифры и пробелы */
translate(column, '[]{}()*#$%@!?+=/\|', '') /* удаление конкретных символов */
🔶 Приведение булевых значений к стандартному виду
case
when lower(column) in ('1', 'yes', 'true', 'y', 't') then true
when lower(column) in ('0', 'no', 'false', 'n', 'f') then false
else null
end as bool_column
❕Ну что, как тебе формат? Голосуй реактами и комментами, если хочешь больше такого
Forwarded from Quant Researcher
🧢 Зачем изобретать велосипед, если можно форкнуть мотоцикл
finstruments — библиотека для управления финансовыми инструментами на Python. За счёт модульной архитектуры, можно создавать кастомные инструменты для любых типов активов и сохранять их в JSON для интеграции с API и базами данных.
Что внутри:
- Поддержка популярных инструментов: форварды, опционы, позиции, портфели, пр.
- Возможность расширения и кастомизации.
- Сериализация/десериализация в JSON.
- Функции расчета дат, бизнес-дней, выплат и прочих финансовых операций.
🪂 Пример создания опциона на акцию
🧘♂️ Пакет легковесный, ставится одной командой
Идеальный инструмент для новичков, кто хочет подсмотреть, как и с чего начать писать классы для инструментов.
Quant Researcher
finstruments — библиотека для управления финансовыми инструментами на Python. За счёт модульной архитектуры, можно создавать кастомные инструменты для любых типов активов и сохранять их в JSON для интеграции с API и базами данных.
Что внутри:
- Поддержка популярных инструментов: форварды, опционы, позиции, портфели, пр.
- Возможность расширения и кастомизации.
- Сериализация/десериализация в JSON.
- Функции расчета дат, бизнес-дней, выплат и прочих финансовых операций.
🪂 Пример создания опциона на акцию
from finstruments.instrument.equity import EquityOption, CommonStock
from finstruments.instrument.common.option.enum import OptionType
from finstruments.instrument.common.option.payoff import VanillaPayoff
from finstruments.instrument.common.exercise_style import AmericanExerciseStyle
from datetime import date
equity_option = EquityOption(
underlying=CommonStock(ticker='AAPL'),
payoff=VanillaPayoff(option_type=OptionType.PUT, strike_price=100),
exercise_type=AmericanExerciseStyle(
minimum_exercise_date=date(2022, 1, 3),
expiration_date=date(2025, 1, 3)
)
)
🧘♂️ Пакет легковесный, ставится одной командой
pip install finstruments
Идеальный инструмент для новичков, кто хочет подсмотреть, как и с чего начать писать классы для инструментов.
Quant Researcher
Forwarded from Ebout Data Science | Дима Савелко
Уничтожение LLM System Design
Как отвечать на собеседовании, если вас спросят: «Постройка мне чат-бота с помощью LLM»? Разберем основные шаги на конкретной задаче.
Давайте пойдём по пунктам из этого поста.
Задача: создать чат-бота, который отвечает на финансовые запросы.
Исходные условия:
- В продакшене уже используется API GigaChat (временное решение).
- Доступен API ChatGPT.
- Есть два ассессора.
- Ответы предоставляются без контекста.
Ограничения:
- Ответ за максимум 2 минуты.
- Аппаратные ресурсы: 4 GPU (80 ГБ каждая, A100).
Бизнесовые метрики
- Уровень автоматизации — процент запросов, обработанных ботом без операторов.
- Снижение затрат — экономия на поддержке
- Удержание клиентов — сколько пользователей продолжают пользоваться услугами после общения с ботом. Но эту метрику сложно определить, поэтому для простоты стоит поделить на тех пользовался чат-ботом, а кто не пользовался.
Онлайн-метрики:
- Удовлетворенность клиентов (CSAT) — пользовательская оценка (1–5).
Оффлайн-метрики:
- Loss — насколько хорошо обучена модель.
G-Eval — метод «LLM as Judge», когда одна модель оценивает ответы другой по качеству (например, от 1 до 5).
Оценка ассессоров — реальные люди оценивают ответы по техническому заданию. Это ключевая метрика, с которой можно проверить корреляцию с G-Eval.
Бенчмарки — открытые или специально созданные под задачу бизнеса.
Выделяем ключевые сущности:
У нас есть диалог, а в диалоге:
- Запрос пользователя
- Ответ модели
- Маркер начала диалога
- Идентификаторы запроса, ответа, пользователя и т.д.
Способы получения данных:
Объем данных: Для обучения LoRA потребуется хотя бы 10 тысяч примеров для тренировки и около 700 для тестирования.
Для упрощения пока исключаем поиск контекста, работу с контекстом распишу в следующей части)
Бейзлайн: предположим, что у нас уже есть метрики для текущего решения (например, на GigaChat).
Входные данные:
X — запрос пользователя.
Y — эталонный ответ.
Модели:
llama3.1 400b. Пробуем сначала запромпить модель и смотрим на результаты бенчмарков.
saiga_llama3.1 70b. Сначала промптим, затем обучаем под конкретную задачу.
Loss: Используем CrossEntropyLoss — простой и надежный метод для обучения LoRA на основе SFT.
Метрики:
На тренировочной выборке оцениваем Loss.
На тестовой — G-Eval, оценки ассессоров (на 500 случайных примерах) и бенчмарки.
Деплой: Для деплоя используем vllm.
- Добавить контекст в ответы для повышения точности модели (реализуем в следующей части).
-Применить ORPO-метод, чтобы модель лучше понимала, какие ответы допустимы, а какие нет.
- Квантизация или дистилляция для того, чтобы уменьшить latency
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM