Arslan's Insights
1.81K subscribers
66 photos
16 videos
53 links
Я Арслан. В этом канале делюсь своими интересными наблюдениями в мире технологий и не только.

Наблюдения не только технические, но и социальные. Стараюсь писать коротко.

Мой контакт: @arslanurt
Download Telegram
Arslan's Insights
Симуляция мира Если хотите сделать беспилотное такси или антропоморфных роботов, то у вас есть интересная проблема. Вам очень сложно нормально тестироваться в реальности. И еще вам сложно собирать обучающую выборку в реальности. Вам сложно валидировать гипотезы…
Автономные грузовики от waabi

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

Waabi подняли раунд-B инвестиций в размере 200m$, хотят выпустить полностью автономный грузовик в 2025 году. Так же они вчера выпустили очень любопытное видео про свой прогресс и планы: https://youtu.be/vaJqvYm-gK8

Я раньше не обратил внимание, но waabi умеют в своем симуляторе симулировать сенсоры (камеры, лидары). Мне в прошлый раз казалось, что симуляция на уровне коробочек в виртуальном мире (картинка номер 1).

Однако они пишут, что умеют симулировать сенсоры: «Performs near real-time high fidelity sensor simulation enabling testing of the entire software stack in an immersive and reactive manner».

И действительно, это же не sora, а проще. Не нужна полная генерация с нуля.

Если у тебя есть реальный проезд по какой-то дороге, то ты можешь вырезать из него другие машины и прочие объекты, а потом подставлять другие. А так же можешь научиться переставлять себя по дороге и добавлять реакции других водителей. Вырезать, подставлять и передвигать - это более простая задача для AI, чем генерация видео-потока полностью с нуля. Во вчерашнем видео есть кадры применения изменений к видео (картинка 2).

Waabi говорят, что чтобы построить большой бизнес не нужно даже быть первым, кто высадил водителя на какой-то отдельной дороге, а нужно уметь быстро масштабировать количество дорог, по которым ездишь без водителя. И ответ на вопрос «как» от waabi - реалистичный симулятор.
👍191
This media is not supported in your browser
VIEW IN TELEGRAM
Спекулятивный декодинг в LLM (p.1)

Все знают, что LLM запускать дорого и работают они долго. Поэтому пробуют разные способы как сделать запуск дешевле, желательно в разы. Достаточно быстро в голову приходит идея следующая:
1. Вот есть запрос и нужно сгенерировать ответ.
2. Берем две нейросети: одну большую, а вторую маленькую. Маленькую запускать дешевле, но она хуже отвечает.
3. Давайте по запросу натренируем классификатор, который сможет понимать, что на этот запрос маленькая нейросеть сможет нормально ответить.
4. Во время ответа на запрос запускаем сначала классификатор, а потом запускаем маленькую или большую модель.
5. PROFIT! Рантайм стал дешевле, возможно сильно.

Какие проблемы такого подхода?
- Классификатор такой не так уж легко получить.
- Классификатор все равно будет иногда ошибаться и качество будет ниже.

Однако очень уж хочется развить эту идею. И вот ее развили в "спекулятивный декодинг". Это одна из тех идей, про которую мне прям жаль, что я сам до такого же не догадался. Надеюсь, что просто недостаточно подумал) Но идея гениальная и при этом простая.
👍6
Спекулятивный декодинг в LLM (p.2)

Начало в предыдущем посте.

LLM генерируют ответ итеративно по токенам. Токен - это часть слова. Слова могут состоять из 1, 2 или более токенов. То есть чтобы получить ответ из 100 токенов, нужно запустить нейросеть 100 раз. Для удобства дальнейших рассуждений скажем, что генерация происходит по словам.

Обучение и запуск LLM устроены так, что LLM не может заглядывать в будущее в тексте. То есть для обучения предсказания слова под номером K, LLM не может заглянуть в те слова, которые были в обучении после слова с номером K. Если бы это было не так, то невозможно было бы использовать LLM в реальности, потому что не было бы "будущего" текста во время ответа на запросы. А при таком подходе можно итеративно генерировать слова.

Идея такая:
1. Вот есть запрос и нужно сгенерировать ответ.
2. Берем две нейросети, одну большую, а вторую маленькую.
3. Генерируем 10 слов с помощью маленькой нейросети.
4. Подаем эти 10 слов в большую нейросеть. Для каждого слова под номером K среди этих 10 мы имеем независимый прогноз.
5. Поэтому мы можем просто пройти и проверить прогнозы маленькой LLM.
7. Допустим для первых 7 слов прогноз совпал. Отлично, тогда их берем.
8. PROFIT! У нас получилось сгенерировать 7 слов за запуск маленькой модели 10 раз и большой всего 1 раз. Возвращаемся к пункту 3.

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

Иллюстрация на видео в первом посте.

Можно почитать подробнее тут: https://huggingface.co/blog/whisper-speculative-decoding
👍11
Multi-Token-Prediction

В комментариях к предыдущему посту уже упомянули эту идею. Хотел позже написать, но напишу уже сейчас)

В Meta придумали вот что: а давайте теперь после токена номер K генерировать прогноз не только для токена номер K+1, но и для K+1, K+2, K+3, K+4.

То есть по факту к выходу LLM добавилась еще одна размерность.

Пишут, что это не влияет на скорость обучения, но:
1. Лучше качество.
2. В 3 раза быстрее инференс.

Ускорение инференса берется как раз из спекулятивного декодинга. Только берется не две модели, а одна. Но на самом деле это не обязательно, идеи прекрасно объединяются как матрешка.

Можно делать спекулятивный декодинг внутри спекулятивного декодинга!

Тут можно почитать подробнее: https://arxiv.org/abs/2404.19737
🔥7👍3
Какие ключи хочет добыть Франция?

Кликбейт заголовок, но тема интересная. В телеграмме есть секретные чаты, которые по идее сам телеграмм видеть не может. Обеспечивается это через end2end шифрование, когда только два клиента знают как расшифровывать сообщения, а сервер посередине не знает. В то, какой конкретно алгоритм в телеграмме используется я не вникал, но общие идеи можно подчерпнуть из классического протокола Диффи-Хеллмана.

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

Пусть есть два клиента: Алиса и Боб. Так же есть два общеизвестных числа g и p. К этим числам Алиса придумывает число a, а Боб придумывает число b.

Затем Алиса вычисляет A = g^a % p (% - остаток от деления), а Боб вычисляет B = g^b % p. После чего Алиса шлет A Бобу, а Боб шлет B Алисе.

После чего нетрудно заметить, что в результате оба обладают секретным числом K, где:

K = B^a % p = A^b % p = g^(a*b) % p

Причем тот, кто прослушивал, что передают Алиса и Боб знает только A и B, из которых число K вычислить около нереально. Чтобы из A узнать число a, например, нужно сделать дискретное логарифмирование. Не существует быстрого решения задачи дискретного логарифмирования.

Олимпиадники по программированию почти все так или иначе изучают алгоритм baby-step-giant-step для дискретного логарифмирования, который работает за O(sqrt(p) * log(p)). Если взять p ~ 10^300, то понятно, что решение не найдется до тепловой смерти вселенной. Есть более быстрые алгоритмы, но они не кардинально лучше с точки зрения решения задачи. Задача не становится решаемой в разумные сроки.

Конечно, алгоритм Диффи-Хеллмана подвержен атаке, когда сервер для Алисы притворяется Бобом и наоброт, а посередине перешифровывает сообщения. Эта атака называется man-in-the-middle. Проверить, что это не происходит, можно встретившись и сравнив число K. Если K одинаковое, то серверу в теории можно доверять.

Что-то аналогичное, но более сложное используется и в телеграмме. Клиент в телеграмме opensource, что в теории дает возможность убедиться, что телеграмм не перешифровывает сообщения.

Вывод - Франция не сможет узнать содержание секретных чатов даже теперь.
🔥273
Arslan's Insights
решение не найдется до тепловой смерти вселенной
Решил глянуть когда же она наступит.

Во-первых sqrt(p) * log(p) при p = 10^300 - это примерно 10^150 * 150 ~= 10^150

Пусть одна итерация длится 1ms, тогда это примерно 10^140 лет.

Говорят, что есть развилка, которая зависит от того стабильны ли протоны. Стабильны - не распадаются сами по себе.

Если протоны не стабильны и распадаются сами по себе, то предполагается, что период полураспада равен 10^34 лет. Тогда через 10^40 лет останутся только черные дыры во вселенной и больше ничего. Черные дыры испаряются через излучение Хокинга. Все черные дыры испарятся через 10^100. Получается в этом сценарии решение не найдется до тепловой смерти вселенной.

Если же протоны не распадаются, то ситуация более непрогнозируемая (лол) и есть вероятность, что материя полностью не исчезнет. Но, возможно, через 10^10^10^56 будет новый большой взрыв.

Получается, что если протоны стабильны, то есть шанс найти решение, особенно если начать сейчас!
😁20👍5🔥3
Yasmina again

На прошлой неделе наконец начались продажи колонок с Ясминой в ОАЭ. Много воды утекло с начала проекта, я уже ушел из Алисы, но это точно проект, который я запомню навсегда.

Мы предоставили технологии Yango и теперь очень здорово видеть, как блоггер на арабском делает обзор колонки, а в комментариях люди пишут шутки про то, как заставить Ясмину болтать с Алексой 🤣

Обязательно посмотрите видео. В чем фишка в видео, кроме просто забавного сюжета, который поймет любой? В том, что Ясмина говорит на диалекте, из-за чего ее можно спутать с настоящим человеком. В арабском много разных диалектов, формализованных правил нигде нет, нам приходилось по крупицам понимать как сделать круто! Некоторых других голосовых помощников, например, спутать с человеком невозможно.

Поздравляю команду Ясмины с запуском!
147🔥18👏6🍾3💅3
Фуф, пока еще расслабляемся, ребята, не умеет o1-preview нормально олимпиадные задачки решать)

https://codeforces.com/contest/2009/submission/280945928 - решила написать на python, не уложилась в лимит.

https://codeforces.com/contest/2009/submission/280946338 - я попросил написать то же самое на C++, неправильный ответ.

Задача если что по уровню заметно ниже, чем должна уметь решать новая модель. Ну это если то, что говорят OpenAI про умения решать задачи на codeforces - правда. Тест в трейн положили видимо)

UPD. Без залогина по ссылкам не пускает теперь оказывается. В комментариях скриншот посылок.

UPD2. В комментариях человеку удалось с первого раза сгенерировать рабочее решение. Получается все-таки не до конца можно расслабляться)
😁13🔥7👍2
На codeforces уже появился пост про анализ o1-mini: https://codeforces.com/blog/entry/133887

o1-mini по идее не отличается от o1-preview в плане умения решать задачи на codeforces, так как заточена на такие вещи.

Короткий вывод: моделька неплохо решает простые задачи, но плохо решает задачи среднего уровня.

Для тех, кто не знает как устроены соревнования на codeforces. Есть 4 дивизиона, для каждого есть диапазон рейтинга, по которому осуществляется доступ к соревнованиям в дивизионе. Классическое соревнование состоит из 6 задач с возрастающей сложностью. Рейтинг человеку прибавляется или убавляется в завимости от места в соревновании. Место зависит от количества и скорости решения задач.

В посте говорят, что первые две задачи Div2 по сложности o1 решает весьма неплохо. Но начиная с третьей задачи Div2 модель справляется уже не очень. При этом четвертая задача Div2 - это эквивалент первой задачи Div1. Все, кто занимается олимпиадным программированием более менее серьезно - это Div1 уровень. То есть модель не дотягивает до Div1.

С нуля докачка до выхода в Div1 занимает около двух-трех лет, если уделять среднее количество времени тренировкам. Что значит выйти в Div1 - это стабильно решать 4 задачи Div2 и иногда решать 5 задач Div2. То есть на 2-3 задачи больше, чем умеет модель.
😱3🫡21
Само по себе очень смешно, что мы такие «а, ну всего лишь div2 решает парочку, фигня»!

А ведь всего лишь несколько лет назад предположение, что нейросетки будут решать задачи на codeforces, казалось бредом)

Но теперь нейросетка сравнялась с человеком, который тренируется в спортивном программировании около года…
15😱3
Yandex Cup 24

https://habr.com/ru/companies/yandex/news/843974/

Открыли регистрацию на чемпионат по программированию, залетайте!

В отличии от обычного ACM ICPC или codeforces, есть много треков. А если точно, то шесть: аналитика, фронтенд‑ и бэкенд‑разработка, мобильная разработка, машинное обучение и "Алгоритм", посвящённый спортивному программированию. Есть люди, которые считают, что спортивное программирование оторвано от реальности. Но решать задачи в формате соревнования очень фаново! И спасибо Yandex Cup за то, что можно в этом веселье поучаствовать не только в треке "Алгоритм"!
👍1364👎1🔥1🥱1
Есть такая цитата от Луиса Гарстнера, который руководил IBM в начале нулевых - "Люди не делают того, что вы ожидаете. Они делают то, что вы проверяете."

В современных реалиях IT в общем и DeepTech в частности я цитату бы модифицировал:

"Люди не делают того, что вы ожидаете. Они делают то, что они обещают сделать."

Как бы ни странно это звучало, но часто люди расходятся после того, как поговорят про проблему и придумают как ее решать, но не обещая друг другу никакие дальнейшие конкретные действия. В итоге примерно в 5-7 случаях из 10 ничего не происходит или происходит ооооочень медленно.

Можно снизить 5-7 до 0, если помнить про такую простую особенность. И не забыть назначить дату, когда вы снова встретитесь и обсудите прогресс!
👍23💯9😁1
#ошибки_джуна

Вот написал джун код, запустил, код не работает. Не хватает коду памяти на сервере. Джун пробует поменять пару констант и перезапустить. Код снова не работает. Джун снова пробует поменять код, но код не работает.

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

Затем джун садится и начинает разбираться "а в чем причина падения кода?". И спустя полдня находит, что алгоритм-то не подходит, просто арифметически не помещается. Нужно написать иначе.

Джун переписывает. Код работает. Джун становится мидлом.
22👍6👏2
Маск показал как роботы танцуют. Всего лишь танцуют, да? Я недавно чуть чуть, на капельку, приоткрыл ящик пандорры про антропоморфных роботов, пробежался глазами по паре статей.

То, что здесь показано - не тривиальная задача. Во время танца внутри робота решается задача - а как не упасть. Система буквально воздействует на каждый электромотор внутри робота, чтобы робот удерживал равновесие.

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

Ну если только ноги робота не приколочены к полу)

Если же приколочены, то через motion capture (gif 2, костюм такой, который движения захватывает) переносим на робота танец человека. Проще примерно в миллион раз, чем если не приколочены.

Интересно, приколочены или нет?
6😁5🤔3
#state_of_ai_report_2024

Ребята из AIR STREET CAPITAL (инвестирует в AI стартапы на ранней стадии) выпустили любопытный обзор происходящего с AI в 2024 году, давайте почитаем. Там 200 слайдов, поэтому буду писать постепенно. Если что ссылка: https://www.stateof.ai

Слайды [1-12] вступление, пропускаем.

Слайды [13-15] про мощь OpenAI, пропускаем, все и так знают. Единственное на что обратил внимание, что привели контраст про крутость o1 и слабость o1. В качестве крутости взяли https://www.youtube.com/watch?v=M9YOO7N5jF8 - тут PhD студент скормил свою научную статью (про черные дыры) и попросил написать код, воспроизводящий ее. o1 за несколько промптов справилась за час. Студент говорит, что потратил на код заметную часть года работы. В качестве слабости приводится неумение o1 играть в шахматы. Правда на слайде ребята добавляют, что не умеет играть "пока..."

Слайд [15] про то, что llama3 закрывает разницу между open и closed моелями. Приводят side-by-side сравнение людьми, что разница между llama3 и GPT-4o или Cloude 3.5 Sonnet небольшая.

Слайд [16] про то, что большинство open-source моделей на самом деле не совсем open.

Слайд [17] меня заинтересовал больше. Про то, что модели во время обучения обучаются в том числе на бенчмарках, на которых потом модели тестируют. Есть такой бенчмарк для оценки моделей GSM8k (Grade School Math 8000). Это 8000 задач по математике уровня начальной школы. Появился новый-свежий бенчмарк GSM1k (примерно то же самое, но задачи другие и их 1000). И вот большинство моделей показывают себя заметно хуже на нем. Еще модели проверили на свежем венгерском экзамене по математике, который модели не могли видеть во время обучения. Так же качество многих моделей сильно хуже на нем, чем на GSM8k. Самая большая разница в качестве у моделей Mixtral, Phi, Mistral, llama, code-llama. С высокой вероятностью модели, на которых качество на свежих бенчмарках сильно хуже, обучились на бенчмарках. Сравнение прикрепил картинками.

Продолжение следует...
👍166🔥3
Arslan's Insights
#state_of_ai_report_2024
#state_of_ai_report_2024

Продолжаем обзор AIR STREET CAPITAL на AI в 2024 году.

Слайд [18] выделю прям отдельно и дополнительно подробно прокомментирую, поэтому текста много, в несколько раз больше, чем на слайде. Слайд про ошибки в бенчмарках.

Даже в самых распространенных бенчмарках сейчас не мало ошибок. Есть, например, бенчмарк MMLU (Measuring Massive Multitask language Understanding) - это топ-1 бенчмарк для больших языковых моделей де факто. Все на него смотрят, это главный бенчмарк. Напомню, что в нем просиходит. В этом бенчмарке модели задается вопрос и дается 4 варианта ответа. Модель должна выбрать ответ из предложенных. Вопросы широкие, по 57 разным тематикам.

И вот в университете Эдинбурга решили проанализовать этот бенчмарк поглубже. Выяснилось, что в бенчмарке есть вопросы с неправильными ответами, непонятные вопросы, вопросы с фактически несколькими корректными ответами или вовсе без корректных ответов среди возможных вариантов. В большинстве тематик в этом бенчмарке ошибок мало, но есть ряд тематик с огромными проблемами. Например, 57% вопросов по вирусологии некорректны.

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

Я когда-то писал про Congnition Labs. Они делают AI Sowftware Engineer и где-то в мае показывали лучшие результаты на бенчмарке SWE-bench. Супер-хайп стартап с оценкой более 2млрд$. Супер-хайп, потому что продукта нет никакого вообще пока у ребят, только демки. SWE-bench - это бенчмарк для проверки способности моделей решать задачи программиста. Каждая задача из бенчмарка состоит из репозитория с кодом и фичреквестов или реквестов на багфиксы к ним. Так же приложены тесты к коду, которые должны успешно проходить, если модель справилась с задачей. Забавно, что Cognition Labs уже не в топе на SWE-bench. Успели раньше всех просто хайпануть получается)))

Так вот OpenAI заявляет, что SWE-bench сделан так, что содержит излишне сложные или вовсе невозможные задачи, поэтому показатели моделей на этом бенчмарке приводят к недооценке способностей моделей. OpenAI в итоге запартнерился с авторами SWE-bench, чтобы сделать SWE-bench Verified, который более показателен.

Поэтому бенчмарк поделился на три категрии: lite, verified и full.

lite - подмножество бенчмарка, который состоит из задач, которые дешево тестировать.
verified - подмножество бенчмарка, который состоит из задач, проверенных людьми, что задачи норм для оценки способностей модели решать задачи программиста.
full - весь бенчмарк, понятно.

Сейчас лучший результат в lite категории, например, у codestory.ai, они умеют решать 43% задач из бенчмарка. Занятно, что стартап, кажется, состоит из всего двух человек, судя по их страничке на workatastartup, но может это не актуальная информация. В прошлом, кстати, ребята побывали ACM ICPC финалистами!

В verified лучший результат у Gru, 45%. Ребята тоже делают AI программиста.

На full лучший результат у Honeycomb, 22%.

Вообще прогресс на SWE-bench впечатляет. Еще в апреле лучший показатель исчислялся единицами процентов. Либо прогресс огромный, либо бенчмарк легко накручивается. Я, как скептик по этой теме, пока буду считать, что скорее бенчмарк легко накрчивается.

Продолжение следует...
👍102
#state_of_ai_report_2024

Слайд [19] снова про мощь OpenAI. За год по прежнему никто не обогнал модели от OpenAI.

Слайд [20] про то, что LLM плохи в математике и геометрии. Но есть решения. DeepMind нагенерили много синтетики на специальном языке для движка формальных доказательств и сделали AlphaGeometry, который чередует специальную языковую модель и движок для формальных диказательств. Такая конструкция решает 25 из 30 олимпиадных задач по геометрии.

Слайд [21] мне очень интересен. В нем информация про уменьшение размера моделей. Берется модель, из нее выкидывается половина слоев, модель дообучается на небольшом датасете и в итоге обладает качеством, не сильно хуже, чем качество исходной модели. И у nvidia, и у meta, и у MIT есть те или иные исследования, как урезать уже готовую модель, практически не теряя в качестве, но сильно выигрывая в производительности.

Слайд [22] логичное продолжение слайда 21. Андрей Карпатый и прочие уважаемые люди говорят, что текущий размер моделей слишком большой. Они говорят, что мы просто не умеем пока достаточно хорошо обучать модели. Когда научимся - размер будет меньше. Сейчас есть хороший способ тренировки маленьких моделей из больших - дистилляция. Фишка дистилляции, что модель обучается копировать предсказание болшой, а это дает сильно болше информации для обучения, чем просто попытка предсказать следующее слово. Например, так делал google для тренировки своих маленьких моделей семейства gemma. Еще слухи ходят, что Claude 3 haiku тоже сдистиллирована на самом деле, но Anthropic этого не подтверждал. Так же появилась либа на питоне для дистилляции: https://github.com/arcee-ai/DistillKit

Слайд [23] замечательный. Появляются LLM-ки, которые можно запускать на телефонах, которые по качеству весьма неплохи. Например, phi-3.5-mini имеет 3.8 млрд параметров, а работает не хуже, чем llama 3.1 8 млрд. Apple выпустил MobileCLIP модель iamge-text, которая тоже достаточно быстра для телефонов.

Слайд [24] продолжение по сути про производительность. Квантизация - когда вес модели занимает меньше бит, чем 16. Майкрософт, например, научился сжимать веса в 1 бит. В презентации утверждают, что квантизация все равно показывает очень хорошее качество. Тем не менее по моему опыту все же качество заметно теряется, если сжимать сильнее, чем в 4-8 бит.
🔥8👍3