Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from ChillHouse (Alexey Moiseenkov)
Что ищут большие фонды и YC. Небольшие саммари.
Forwarded from Хитрый Питон
Django часто выбирают для быстрого старта в небольших стартапах — как средство накодить прототип бекенда за минимальное время. Но с ростом проекта неизбежно возникают вопросы производительности и надежности.

Такой рост может вызывать у не очень опытных разработчиков панику и непонимание - все тормозит, бизнес жалуется, что делать? В сегодняшней статье просто и по делу описаны ключевые аспекты масштабирования Django: оптимизация запросов, кэш, CDN и т.д. Отличное вводное чтиво для тех, кто впервые столкнулся с ростом нагрузи или просто хочет подготовить проект к будущему росту: https://slimsaas.com/blog/django-scaling-performance
Forwarded from КПД
На днях наткнулся на канал в Youtube некоего Simon Oz.

Парень доступно, с красивыми визуализациями в стиле 3Blue1Brown рассказывает про всякие темы из теории информации и особенности программирования на CUDA.

В частности, особого внимания заслуживает видос про то, как написать эффективный kernel для softmax, который быстрее реализаций в торче и на тритоне. Он пошагово анализирует узкие места, нюансы железа и алгоритма, и постепенно добивается улучшения производительности:

1️⃣ Эффективный алгоритм редукции для нахождения максимума
2️⃣ Оптимизации доступов к памяти (coalescing)
3️⃣ Перенос части операций из shared memory в регистры GPU (которые еще быстрее)
4️⃣ Векторизация операций через float4
5️⃣ Однократная подгрузка данных для подсчета максимума и экспоненты вместо двухкратной

Красивое...
#llm
Где делать инференс ллмок
Forwarded from Nikita Sushko
Есть много вариантов. vLLM — самый простой, TGI — очень быстрый с некоторых пор, TensorRT LLM — очень сложно в настройке, не стоит того, Llama.cpp не быстрый и не простой в настройке, зато самый популярный и квантов больше всего
Forwarded from Valery
еще SGLang, вроде как, набирает обороты - или уже отменили?
Forwarded from Remixer Dec
Частично перекатился на Zed

его немного больно конфигурировать, но зато потом летает
а курсор этот ваш - проприетарщина с закрытым кодом, т.е. разрабы не хотят делиться своим кодом, но не против стащить ваш
Forwarded from Slach
Cursor - но только в режиме Composer . который ментально близок к тому как ты ставишь задачу джуну, и он тебе приносит pull request
остальное бесполезно

в JetBrains слежу вот за этим плагином
https://github.com/devoxx/DevoxxGenieIDEAPlugin/
но он пока недоделал похожий функционал
Forwarded from Женя Никитин
мой сетап
vscode + continue.dev + cline
Дизайн 🆎 экспериментов и почему это важно.

😱 Ранее я считал, что важнее всего подводить итоги, но как оказалось не только. Дизайн эксперимента подразумевает определенную структуру, комплекс действий, направленных для корректного запуска и последующего анализа эксперимента. Подразумевается, что разметка уже готова (более подробно хочу рассказать в следующих постах).

🎄 При проектировании A/B эксперимента учитывайте сезонность, например, в Новый Год пользователи могут вести себя по-другому

💡 Нужно определиться с гипотезой. Проводя A/B тестирование, мы всегда говорим о постановке различных гипотез, как на языке бизнеса (в понятном для всех формате), так и на языке статистики, когда говорим про нулевые и альтернативные гипотезы. Важно понимать, что от гипотезы зависит многое. По сути, как мы дальше будем интерпретировать различные варианты.

🙅‍♂️ Риски. Какие могут быть риски для компании? Если что-то резонирующее, которое сразу улетит в СМИ - тест можно перезапускать, можем получить при анализе невалидные результаты. Например, если мы просто убираем точку входа или полностью меняем популярное приложение при раскатке 50/50.

🗒 Определение метрик и теста. А на что мы смотрим, когда подводим итоги? Может есть какие-то целевые, по которым мы хотим принимать решения, а может есть какие-то вспомогательные, которые нам нужны для дальнейшего анализа. Если у нас есть своя A/B платформа, проблемой с подсчетов быть не должно. На этом этапе важно также понимать какой тест мы используем для анализа.

Сегменты пользователей. Хотим мы катиться на всех или нет зависит от сетапа эксперимента, возможно, нам нужно брать определенный срез пользователей (старички/новички, пользователи, обладающие каким-то признаком).

🌳 Дерево принятия решений. Если метрик несколько, мы должны определиться с различными вариантами, когда эксперимент катим, а когда нет. Если метрика серая, то..., а если нет, то. Базово должно фиксироваться до проведения эксперимента.

😁 Определение MDE / размера выборки / длительности эксперимента. Мы должны понять на истории, а действительно ли мы сможем прокрасить эксперимент? По сути, тот же MDE нужен нам для определения примерной длительности эксперимента или ответа на вопрос, а эта метрика чувствительна вообще будет на данном срезе или нет?

🥪 Другие слои. А считаем ли мы корректным проводить эксперимент, если слои забиты, а насколько забиты, все ли окей в этом плане?

📱 Если есть своя команда разработки и платформа, то с заведением пользователей (кому какой флаг навешиваем) проблем нет, а если самому, то нужно продумать. Не все могут себе позволить запускать так тесты. Если нет, то со старичками понятно, мы отдаем контроль и тест списком, с новичками сложнее, как будто нужно раз в какое-то время на дню отдавать пользователей списками с айдишниками.

🤕 Тестинг. Посмотрите, как функционал работает, корректно ли все раскатилось, нет ли проблем, походите по различным страницам приложения, может найдете какие-то проблемы, которые можно в дальнейшем пофиксить с помощью разработки

Корректное логирование эксперимента. Можно раскатить на себя, посмотреть, собрать различные события в тестовой группе, попробовать посчитать метрики (просмотр, клик по фиче X, которую мы запускаем на тестовую группу).

🚀 Запуск эксперимента

От вас жду 100
🐳 за пост. Далее пройдемся по вопросам, касаемых разметки и ТЗ для команды разработки и я продолжу писать посты из списка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Start Career in DS
📊 Как оценивать LLM: метрики [Ч.1]

🤖 Оценка языковых моделей также необходима, как и при работе с классическими ML-моделями. Однако, в случае с LLM задача усложняется тем, что мы должны оценивать текстовые данные.

💯 В этой части поста мы расскажем про наиболее популярные NLP-метрики для оценки языковых моделей, а уже в следующем посте поговорим про более продвинутые техники, включая бенчмарки.

А в чем, собственно, отличие между метриками и бенчмарками:

Метрики - используются для измерения конкретных навыков аспектов работы модели (например, точность перевода с русского на английский) или могут использоваться, как часть бенчмарка.
Бенчмарки же — это наборы тестов, которые обычно включают множество задач и способов их оценок (метрик). Бенчмарки дают более масштабную оценку качества работы моделей, не в рамках отдельной задачи.

Поговорим про статистические метрики:


1️⃣ Перплексия:
Перплексия показывает, насколько точно модель предсказывает следующий токен: чем ниже значение, тем уверенее предсказание.
Например, если перплексия равна 1000, это означает, что модель в среднем имеет 1000 равновероятных вариантов для каждого следующего слова, что указывает на плохое качество предсказаний. Через перплексию в LLM можно определить галлюцинации, хоть и сама метрика не всегда коррелирует с качеством генерации текста.
Более подробно про перплексию и формулу данной меры читайте тут.

2️⃣ BLEU и ROUGE:
О данных метриках мы писали в одном из вопросов недавнего квиза (п.5) и оставляли хорошие материалы для изучения, советуем вернуться и ознакомиться.

3️⃣ METEOR:
Данная метрика создавалась, как улучшенная альтернатива BLEU, которая учитывает не только точное совпадение слов в сгенерированном тексте с эталонными примерами, но и их синонимы и морфологические варианты, что делает её более гибкой и устойчивой к разнообразным формулировкам. В добавок, метрика выдает штраф за неправильную фрагментацию текста и неверный порядок слов. Подробно про методику расчет METEOR смотрите в этом видео.

4️⃣ Классические ML-метрики:
Оценивать текст можно также, как и числа, используя ML-метрики. Например, посчитать количество слов (токенов) в сгенерированном примере, вошедшие в эталонный пример - accuracy. Или посчитать recall через количество слов, вошедшие в эталонный пример (TP), но, учитывая недостающие токены (FN).

Теперь поговорим про model-based метрики:

5️⃣ BERTScore:
Данная метрика в процессе расчета использует BERT-модели, чтобы через векторные представления слов в предложении оценивать схожесть текстов. Кратко процесс оценки выглядит следующим образом: получение эмбеддингов для каждого слова в сгенерированном и эталонном текстах с помощью BERT. И затем (в упрощенном виде) по косинусному сходству токены из сгенерированного текста сопоставляются с токенами эталонного текста, после чего высчитывается Recall-BERT, Precision-BERT F-BERT. Более детально про архитектуру подсчета BERTScore читайте тут.

6️⃣ G-Eval:
G-Eval
(Generative Evaluation) создан для того, чтобы преодолеть ограничения статистических метрик (неустойчивость к формулировкам, разные длины сравниваемых текстов, непренимость к сложным задачам). В G-Eval в виде оценщика используются другие GPT-модели, например, GPT-4 от OpenAI. Оценка проводится через сравнительный анализ сгенерированного текста и эталонного примера по заранее выбранным критериям (согласованность, точность и т.д.).

🔥 Однако, это не весь список метрик, с помощью которых можно оценивать LLM, дополнительно читайте тут:

- Серия постов на Хабре про эволюцию NLP-метрик
- Ещё две статьи тут и тут про метрики, фреймворки и лучшие практики для оценки LLM.
- Отличная статья для погружения в бечнмаркинг LLM
- Статья с объяснением подхода "LLM-as-a-Judge" (LLM, как судья) [ENG]
- Evaluating-Cookbook - руководство по оценке LLM, созданное командой Hugging Face.

Ставьте ❤️ и 🔥 под постом!
Также пишите свои комментарии и вопросы! До встречи👋
Forwarded from DevFM
Почему не нужно отвлекать программиста

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

В статье Как поймать «поток», и как сделать так, чтобы он не сорвался объясняется, что такое состояние потока и как постоянное прерывание этого самого потока замедляет работу. По оценке автора, погружение в состояние потока "стоит" 15 минут, то есть любое прерывание имеет вот такие дополнительные накладные расходы.

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

#edu