Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
МЛ алгосы: вторая часть или mlleetcode ultrahard💃
В этом посте я собрал весь код по статье Attention is All You Need, и также накинул картиночек с формулами для большего понимания. Надеюсь, вам понравится💗
В этом посте я собрал весь код по статье Attention is All You Need, и также накинул картиночек с формулами для большего понимания. Надеюсь, вам понравится
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
transformer_code.ipynb
18.5 KB
Forwarded from что-то на инженерном
Сегодня предлагаю разобрать популярную задачу с SQL-собесов.
Звучит она обычно так:
🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁
Для наглядности работы джойнов представим, что обе таблицы содержат по 5 строк с уникальными значениями от 1 до 5, типа:
t1 = [1,2,3,4,5]
t2 = [1,2,3,4,5]
🟣 Все типы джойнов, кроме CROSS JOIN, вернут по 5 строк, т.к. для каждого значения в t1 есть ровно одно совпадающее значение в t2.
🟣 CROSS JOIN создает все возможные комбинации пар строк: 5×5 = 25 строк.
🟣 То есть, если значения одинаковые и уникальные, результат всех основных джойнов (INNER, LEFT, RIGHT, FULL OUTER) - это количество уникальных строк, а CROSS JOIN - произведение их количества.
🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁
Усложняемся, добавим в наборы данных NULL и дубликаты:
t1 = [1, 2, 2, NULL, 5]
t2 = [2, 2, 3, NULL, NULL]
🟣 INNER JOIN
В t1 и t2 совпадают только значения “2”, следовательно, количество строк: 2×2=4 (каждая двойка из t1 с каждой двойкой из t2).
NULL с NULL не совпадает, строк с NULL в результате нет.
🟣 LEFT JOIN
Все 5 строк из t1 гарантированы.
Значения с “2” вернут + две дополнительные строки, количество = 7 строк.
🟣 RIGHT JOIN
Аналогично LEFT JOIN, но со всеми строками t2, количество = 7 строк.
🟣 FULL OUTER JOIN
Включает все: дубликаты, NULL с обеих таблиц. Количество = 10 строк.
🟣 CROSS JOIN
Каждая строка из первой таблицы умножается на каждую из второй = 25 строк.
🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁 🏁
💡 Становится понятно, что минимум будет достигаться в случае отсутствия пересечения вообще. В таком случае:
💡 А максимум будет достигаться, когда каждая строка t1 совпадает с каждой строкой t2:
💡 Если одна из таблиц полностью пустая (не содержит строк):
А вам попадалась эта задача на собеседованиях?😈
©️что-то на инженерном
Звучит она обычно так:
Есть таблицы t1 и t2, состоящие из одного столбца и имеющие m и n строк соответственно.
Какое минимальное и максимальное количество строк будет в конечной таблице T, полученной в результате джойна t1 и t2?🟣 t1 inner join t2🟣 t1 left join t2🟣 t1 right join t2🟣 t1 full outer join t2🟣 t1 cross join t2⭐️ Учитывая, что значения могут повторяться или быть равны NULL.
Для наглядности работы джойнов представим, что обе таблицы содержат по 5 строк с уникальными значениями от 1 до 5, типа:
t1 = [1,2,3,4,5]
t2 = [1,2,3,4,5]
Усложняемся, добавим в наборы данных NULL и дубликаты:
t1 = [1, 2, 2, NULL, 5]
t2 = [2, 2, 3, NULL, NULL]
В t1 и t2 совпадают только значения “2”, следовательно, количество строк: 2×2=4 (каждая двойка из t1 с каждой двойкой из t2).
NULL с NULL не совпадает, строк с NULL в результате нет.
Все 5 строк из t1 гарантированы.
Значения с “2” вернут + две дополнительные строки, количество = 7 строк.
Аналогично LEFT JOIN, но со всеми строками t2, количество = 7 строк.
Включает все: дубликаты, NULL с обеих таблиц. Количество = 10 строк.
Каждая строка из первой таблицы умножается на каждую из второй = 25 строк.
🟣
INNER JOIN вернет
0 строк
, т.к. нет совпадений.
🟣
LEFT JOIN вернет все строки из t1 с NULL в местах столбцов t2
➡️
минимум m строк.
🟣
RIGHT JOIN вернет все строки из t2 с NULL в местах столбцов t1
➡️
минимум n строк.
🟣
FULL OUTER JOIN вернет сумму количества строк из обеих таблиц
(m + n),
т.к. ни одна строка не совпала.
🟣
CROSS JOIN остается без изменений
➡️
m × n строк
.
При полном пересечении, когда
каждая строка t1 совпадает с каждой строкой t2
, все типы джойнов вернут
максимальное количество строк m × n
, потому что каждый элемент из одной таблицы сочетается с каждым элементом из другой, образуя полный набор пар совпадающих строк.
🟣
INNER JOIN
вернет 0 строк
, т.к. нет данных для совпадений.
🟣
LEFT JOIN, если пустая таблица справа, вернет
все строки из левой таблицы с NULL в столбцах правой таблицы
(число строк равно количеству строк в левой таблице).
🟣
RIGHT JOIN, если пустая таблица слева, вернет
все строки из правой таблицы с NULL в столбцах левой таблицы
(число строк равно количеству строк в правой таблице).
🟣
FULL OUTER JOIN вернет
все строки из непустой таблицы с NULL в столбцах пустой таблицы
(число строк равно количеству строк непустой таблицы).
🟣
CROSS JOIN вернет
0 строк,
т.к. произведение по пустому множеству всегда пусто.
А вам попадалась эта задача на собеседованиях?
©️что-то на инженерном
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ученый без степени | AI-блог Ани
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Заметки LLM-энтузиаста
GenSpark AI Developer 2.0: создание мобильных приложений одной командой 📱
GenSpark опять вырывается вперед, представляя обновленную версию AI Developer 2.0 — которая содержит встроенные инструменты для разработки нативных мобильных приложений с помощью текстовых запросов (см. скриншот)
Основные возможности:
• Создание игр и бизнес-приложений по текстовому описанию
• Автоматическая интеграция с Firebase для работы с базами данных
• Подключение Google Analytics для отслеживания метрик
• Генерация готовых пакетов для публикации в Google Play
Примеры использования:
1️⃣ Мобильные игры — платформа создает работающую игру за несколько минут по простому описанию
2️⃣ Бизнес-приложения — например, приложение для спортзала с системой бронирования занятий
3️⃣ Интеграция с сервисами — автоматическое подключение баз данных и аналитики
Процесс разработки:
• Выбор типа приложения (нативное)
• Описание идеи в текстовом виде
• Автоматическая генерация кода и интерфейса
• Тестирование и подготовка к публикации
Публикация приложений:
В примере на видео показывается процесс публикации в Google Play — система генерирует готовый пакет для загрузки.
Я подготовил подробную интерактивную инструкцию по ссылке
Для публикации в App Store нужно скачать код, скомпилировать локально и отправить на модерацию. Подробное руководство по App Store будет доступно позже 📲
Инструмент позиционируется как решение для пользователей без опыта программирования, которые хотят создать собственное мобильное приложение 🚀
Для тех, кто хочет повторить примеры из видео
Привожу промпты, которые там использовались:
Сейчас из-за наплыва желающих может наблюдаться перегрузка Flutter Sandbox, у меня на момент тестирования не получилось сгенерировать мобильное приложение. Надеюсь, что это временные трудности и разработчики их исправят.
@llm_notes
#mobile #vibecoding #firebase #genspark #app
GenSpark опять вырывается вперед, представляя обновленную версию AI Developer 2.0 — которая содержит встроенные инструменты для разработки нативных мобильных приложений с помощью текстовых запросов (см. скриншот)
Основные возможности:
• Создание игр и бизнес-приложений по текстовому описанию
• Автоматическая интеграция с Firebase для работы с базами данных
• Подключение Google Analytics для отслеживания метрик
• Генерация готовых пакетов для публикации в Google Play
Примеры использования:
1️⃣ Мобильные игры — платформа создает работающую игру за несколько минут по простому описанию
2️⃣ Бизнес-приложения — например, приложение для спортзала с системой бронирования занятий
3️⃣ Интеграция с сервисами — автоматическое подключение баз данных и аналитики
Процесс разработки:
• Выбор типа приложения (нативное)
• Описание идеи в текстовом виде
• Автоматическая генерация кода и интерфейса
• Тестирование и подготовка к публикации
Публикация приложений:
В примере на видео показывается процесс публикации в Google Play — система генерирует готовый пакет для загрузки.
Я подготовил подробную интерактивную инструкцию по ссылке
Для публикации в App Store нужно скачать код, скомпилировать локально и отправить на модерацию. Подробное руководство по App Store будет доступно позже 📲
Инструмент позиционируется как решение для пользователей без опыта программирования, которые хотят создать собственное мобильное приложение 🚀
Для тех, кто хочет повторить примеры из видео
Привожу промпты, которые там использовались:
build a halloween candy catch gamecreate a modern fitness course booking application using Firebase as the backendСейчас из-за наплыва желающих может наблюдаться перегрузка Flutter Sandbox, у меня на момент тестирования не получилось сгенерировать мобильное приложение. Надеюсь, что это временные трудности и разработчики их исправят.
@llm_notes
#mobile #vibecoding #firebase #genspark #app
Forwarded from Заметки LLM-энтузиаста Chat
Интересно будет сравнить потом с другим популярным онлайн-инструментом для создания мобильных приложений https://rork.com/
Rork
Rork | Idea to mobile app in minutes
Rork builds complete, production-ready mobile apps from your description using AI and Expo (React Native)
Forwarded from max.sh
Последние несколько недель плотно работал с terminal-bench. За названием кроется сразу очень много вещей. Это и бенчмарк, и агент, и фреймворк для создания среды, где эти самые агенты могут работать над задачами.
В этом тексте как раз про последнее - про инструменты для создания среды. Сейчас это еще все называют execution harness.
Что это вообще такое? Допустим, у вас есть набор задач, и вы хотите протестировать какого-нибудь готового агента типа Claude Code или Codex (или даже своего) на то, как он справляется с этими задачами.
Чтобы такое дело провернуть, нужно понаписать немалое количество инфраструктурного кода, чтобы:
а) упаковать ваши подготовленные задачи в среду, где их можно будет изолированно решать (как правило, докер-контейнеры);
b) установить нужных агентов и/или предоставить весь необходимый скаффолдинг (если тестируете своего агента);
с) подготовить отдельную среду, в которой будет запускаться решение агента и как-то оцениваться (например, скрытыми автотестами);
d) ну и наконец, нужно хранить все возможные логи, чтобы потом можно было проанализировать все возможные паттерны;
e) а, и конечно, чтобы все это легко запускалось, каждую задачу можно было перезапускать по N раз и в идеале — легко масштабировалось.
С одной стороны, все это можно реализовать самому. Но это довольно долго и с множеством подводных камней.
Поэтому зачем, когда есть terminal-bench? На мой взгляд, у ребят получился простой, элегантный и масштабируемый фреймворк, который просто работает из коробки в несколько команд. С вас только подготовить все запускалки (докерфайлы для создания окружения и скрипты, как тестировать решение). Каждая задача - то вот такая структур. Подробный гайд есть тут . И реализовать своего агента, если нужно. Либо взять готовые интеграции из коробки - все популярные агенты уже доступны, подставляйте только API-ключи. Можно и их кастомно переделать под себя.
А потом запускаемся:
Все инструменты для отладки тоже есть; ещё и интерактивные сессии реализованы, если хочется симулировать какое-то определённое поведение пользователя при работе с агентом.
По впечатлениям - восторг. От опенсорсных решений давно такого не было. Все нужды, чтобы гонять своих агентов в режиме SWE-Bench задач (есть issue, просим агента сделать, делает, проверяем юнит-тестами) закрывает. Кстати, некоторое количество популярных бенчей тоже интегрировано.
И еще раз: terminal-bench предоставляет среду, чтобы можно было не париться с возней по запуску и логированию. Самое сложное – это подготовить задачи и сценарии. Это уже на вас.
В этом тексте как раз про последнее - про инструменты для создания среды. Сейчас это еще все называют execution harness.
Что это вообще такое? Допустим, у вас есть набор задач, и вы хотите протестировать какого-нибудь готового агента типа Claude Code или Codex (или даже своего) на то, как он справляется с этими задачами.
Чтобы такое дело провернуть, нужно понаписать немалое количество инфраструктурного кода, чтобы:
а) упаковать ваши подготовленные задачи в среду, где их можно будет изолированно решать (как правило, докер-контейнеры);
b) установить нужных агентов и/или предоставить весь необходимый скаффолдинг (если тестируете своего агента);
с) подготовить отдельную среду, в которой будет запускаться решение агента и как-то оцениваться (например, скрытыми автотестами);
d) ну и наконец, нужно хранить все возможные логи, чтобы потом можно было проанализировать все возможные паттерны;
e) а, и конечно, чтобы все это легко запускалось, каждую задачу можно было перезапускать по N раз и в идеале — легко масштабировалось.
С одной стороны, все это можно реализовать самому. Но это довольно долго и с множеством подводных камней.
Поэтому зачем, когда есть terminal-bench? На мой взгляд, у ребят получился простой, элегантный и масштабируемый фреймворк, который просто работает из коробки в несколько команд. С вас только подготовить все запускалки (докерфайлы для создания окружения и скрипты, как тестировать решение). Каждая задача - то вот такая структур. Подробный гайд есть тут . И реализовать своего агента, если нужно. Либо взять готовые интеграции из коробки - все популярные агенты уже доступны, подставляйте только API-ключи. Можно и их кастомно переделать под себя.
А потом запускаемся:
tb run \
--dataset terminal-bench-core==head \
--agent claude-code \
--task-id hello-world
Все инструменты для отладки тоже есть; ещё и интерактивные сессии реализованы, если хочется симулировать какое-то определённое поведение пользователя при работе с агентом.
По впечатлениям - восторг. От опенсорсных решений давно такого не было. Все нужды, чтобы гонять своих агентов в режиме SWE-Bench задач (есть issue, просим агента сделать, делает, проверяем юнит-тестами) закрывает. Кстати, некоторое количество популярных бенчей тоже интегрировано.
И еще раз: terminal-bench предоставляет среду, чтобы можно было не париться с возней по запуску и логированию. Самое сложное – это подготовить задачи и сценарии. Это уже на вас.
Terminal-Bench
A benchmark for terminal agents
Forwarded from partially unsupervised
Когда-то я думал, что ML метрика - это довольно простая функция от двух параметров: обученной модели и тестового датасета. Но это абстракция, конечно, не выдерживает столкновения с реальным миром, а параметров значительно больше.
С локальными факторами справиться как будто несложно. О роли random seed довольно быстро узнают даже новички. Зафиксировать библиотеки тоже учат на software engineering 101.
То, что совпадение версии библиотеки - не признак эквивалентности, узнают не все (я когда-то два полных дня искал причину расхождения в ML тестах, и кроличья нора привела меня к нюансам линковки libjpeg в билдах pillow пятилетней давности).
Влияет и железо, причем не только на уровне "на какой платформе и с какой версией драйверов" - вот нетривиальный пример:
Когда бенчмарки стали считаться поверх LLM API, отмазка "на моей машине воспроизводится" перестала работать. К локальным факторам добавился целый пласт скрытых факторов на стороне провайдера. Сначала по аналогии с random seed = 42 все учились выставлять температуру в 0, потом широко известный в узких кругах стартап всем рассказал, что размер батча важен.
И вот недавно я наступил на новые грабли: внутренний агентский бенчмарк по генерации приложений начал демонстрировать явную сезонность. Видел такое раньше, когда человек додумался использовать
Ничего хитрого: у агента было два ограничения, на количество шагов и на общее время генерации. И вот в час пик по американскому времени провайдеру становилось хуже, скорость ответа падала => случались таймауты.
С локальными факторами справиться как будто несложно. О роли random seed довольно быстро узнают даже новички. Зафиксировать библиотеки тоже учат на software engineering 101.
То, что совпадение версии библиотеки - не признак эквивалентности, узнают не все (я когда-то два полных дня искал причину расхождения в ML тестах, и кроличья нора привела меня к нюансам линковки libjpeg в билдах pillow пятилетней давности).
Влияет и железо, причем не только на уровне "на какой платформе и с какой версией драйверов" - вот нетривиальный пример:
The most compelling proof came when we took a failed L20 experiment and resumed it from a checkpoint on H20 GPUs. The training immediately stabilized and recovered, proving the hardware's first-order impact on the problem.
Когда бенчмарки стали считаться поверх LLM API, отмазка "на моей машине воспроизводится" перестала работать. К локальным факторам добавился целый пласт скрытых факторов на стороне провайдера. Сначала по аналогии с random seed = 42 все учились выставлять температуру в 0, потом широко известный в узких кругах стартап всем рассказал, что размер батча важен.
И вот недавно я наступил на новые грабли: внутренний агентский бенчмарк по генерации приложений начал демонстрировать явную сезонность. Видел такое раньше, когда человек додумался использовать
datetime.now() где-то в feature engineering. Ручная работа с фичами - история почти античных времен, явно не про prompt2app кодогенерацию. Ничего хитрого: у агента было два ограничения, на количество шагов и на общее время генерации. И вот в час пик по американскому времени провайдеру становилось хуже, скорость ответа падала => случались таймауты.