Интересное что-то
517 subscribers
2.72K photos
253 videos
138 files
4.51K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
МЛ алгосы: вторая часть или mlleetcode ultrahard💃

В этом посте я собрал весь код по статье Attention is All You Need, и также накинул картиночек с формулами для большего понимания. Надеюсь, вам понравится💗
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня предлагаю разобрать популярную задачу с SQL-собесов.

Звучит она обычно так:
Есть таблицы 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]

🟣Все типы джойнов, кроме 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 строк.
🏁🏁🏁🏁🏁🏁🏁🏁🏁

💡Становится понятно, что минимум будет достигаться в случае отсутствия пересечения вообще. В таком случае:

🟣
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:
При полном пересечении, когда
каждая строка 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
Интерактивный tutorial по аудио кодекам от Kyutai labs 😎

https://kyutai.org/next/codec-explainer
Please open Telegram to view this post
VIEW IN TELEGRAM
GenSpark AI Developer 2.0: создание мобильных приложений одной командой 📱


GenSpark опять вырывается вперед, представляя обновленную версию AI Developer 2.0 — которая содержит встроенные инструменты для разработки нативных мобильных приложений с помощью текстовых запросов (см. скриншот)

Основные возможности:

• Создание игр и бизнес-приложений по текстовому описанию
• Автоматическая интеграция с Firebase для работы с базами данных
• Подключение Google Analytics для отслеживания метрик
• Генерация готовых пакетов для публикации в Google Play

Примеры использования:

1️⃣ Мобильные игры — платформа создает работающую игру за несколько минут по простому описанию

2️⃣ Бизнес-приложения — например, приложение для спортзала с системой бронирования занятий

3️⃣ Интеграция с сервисами — автоматическое подключение баз данных и аналитики

Процесс разработки:
• Выбор типа приложения (нативное)
• Описание идеи в текстовом виде
• Автоматическая генерация кода и интерфейса
• Тестирование и подготовка к публикации

Публикация приложений:
В примере на видео показывается процесс публикации в Google Play — система генерирует готовый пакет для загрузки.
Я подготовил подробную интерактивную инструкцию по ссылке
Для публикации в App Store нужно скачать код, скомпилировать локально и отправить на модерацию. Подробное руководство по App Store будет доступно позже 📲

Инструмент позиционируется как решение для пользователей без опыта программирования, которые хотят создать собственное мобильное приложение 🚀

Для тех, кто хочет повторить примеры из видео
Привожу промпты, которые там использовались:

build a halloween candy catch game

create 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/
Forwarded from max.sh
Последние несколько недель плотно работал с 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 предоставляет среду, чтобы можно было не париться с возней по запуску и логированию. Самое сложное – это подготовить задачи и сценарии. Это уже на вас.
Forwarded from partially unsupervised
Когда-то я думал, что ML метрика - это довольно простая функция от двух параметров: обученной модели и тестового датасета. Но это абстракция, конечно, не выдерживает столкновения с реальным миром, а параметров значительно больше.

С локальными факторами справиться как будто несложно. О роли 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 кодогенерацию.

Ничего хитрого: у агента было два ограничения, на количество шагов и на общее время генерации. И вот в час пик по американскому времени провайдеру становилось хуже, скорость ответа падала => случались таймауты.