С интересом прочитал короткую статью Bytes Are All You Need: Transformers Operating Directly On File Bytes.
TL;DR: авторы попробовали учить трансформеры на недекодированных файлах (картинки и звуки), модель очень простая: сырые байты => token embedding => conv1d для уменьшения размерности => transformer go brrr. Работает на JPEG, TIFF, PNG, WAV, MP3; ожидаемо, форматы с компрессией работают хуже. Метрики не самые клевые для 2023, но авторы явно и не пытались побить state of the art.
Интересно другое:
1) Всеми любимый Andrej Karpathy давно восхищается тем, насколько трансформер сближает домены: раньше ML-задачи на картинках, текстах и аудиоданных решались совсем по-разному, асейчас полковник Кольт уравнял их шансы решения разных задач все больше похожи друг на друга. Эта статья - еще один шаг в том же направлении: домен не важен, засунул байтики и норм.
Наверное, похожие чувства были у людей, когда AlexNet вдруг всех победил: "это что, не надо пилить дескрипторы, просто пихаешь RGB-датку в свертки, добился сходимости (без батчнормов и residual connections, хехе) и все??".
2) В статье рассказывается, что такой подход может привнести новые элементы в построение безопасных систем. Например, можно представить камеру, которая в принципе не формирует полное RGB изображение, а только рандомные пиксели, и на этом можно успешно учиться (метрики прилагаются). Или, например, можно консистентно обфусцировать инпуты, и это тоже потенциально полезно для приватности. Учитывая, что авторы статьи из Apple, подозреваю, что они вполне могут использовать идеи byteformer для privacy-preserving задач в реальных устройствах.
TL;DR: авторы попробовали учить трансформеры на недекодированных файлах (картинки и звуки), модель очень простая: сырые байты => token embedding => conv1d для уменьшения размерности => transformer go brrr. Работает на JPEG, TIFF, PNG, WAV, MP3; ожидаемо, форматы с компрессией работают хуже. Метрики не самые клевые для 2023, но авторы явно и не пытались побить state of the art.
Интересно другое:
1) Всеми любимый Andrej Karpathy давно восхищается тем, насколько трансформер сближает домены: раньше ML-задачи на картинках, текстах и аудиоданных решались совсем по-разному, а
Наверное, похожие чувства были у людей, когда AlexNet вдруг всех победил: "это что, не надо пилить дескрипторы, просто пихаешь RGB-датку в свертки, добился сходимости (без батчнормов и residual connections, хехе) и все??".
2) В статье рассказывается, что такой подход может привнести новые элементы в построение безопасных систем. Например, можно представить камеру, которая в принципе не формирует полное RGB изображение, а только рандомные пиксели, и на этом можно успешно учиться (метрики прилагаются). Или, например, можно консистентно обфусцировать инпуты, и это тоже потенциально полезно для приватности. Учитывая, что авторы статьи из Apple, подозреваю, что они вполне могут использовать идеи byteformer для privacy-preserving задач в реальных устройствах.
Моя любимая художественная книга - "Криптономикон" Нила Стивенсона, ставший уже классическим исторический боевик про вторую мировую, криптографию и бум доткомов одновременно. Кстати, именно Стивенсон придумал metaverse в своем раннем посткиберпанк-романе "Лавина", таким образом внеся значительный вклад в нынешнее безумие Цукерберга.
Стивенсон популярен среди нердов за проработанность деталей, в т.ч. исторических: например, вымышленные персонажи участвуют в "Барочном цикле" наравне с Ньютоном, Лейбницем и Вильгельмом Оранским, а в "Криптономиконе" - с Аланом Тьюрингом и генералом Макартуром. Таким образом фикшен переплетается с нон-фикшеном: "Барочный цикл" до сих пор остается моим основным источником знаний о 17-18 веках в Европе.
И вот недавно я нашел книгу, которая во многом похожа на "Криптономикон" по духу, будучи при этом полностью нон-фикшеном. Это "Отряд отморозков" (в оригинале The Bastard Brigade) - популярно рассказанная история о том, какие открытия привели к возможности создания атомной бомбы и как правительственные агентства пытались помешать немецкому Урановому Клубу ее все-таки создать.
Помимо того, что книга просто затягивает как увлекательный action, в ней ощущаются какие-то параллели с настоящим. Незадолго до большой войны какие-то умники придумали неожиданно мощную технологию, которую сложно контролировать, и вдруг все озаботились тем, что плохие (или просто недостаточно осторожные) ребята откроют ящик Пандоры, который уничтожит человечество. Ничего не напоминает, господа машинлернеры?
Стивенсон популярен среди нердов за проработанность деталей, в т.ч. исторических: например, вымышленные персонажи участвуют в "Барочном цикле" наравне с Ньютоном, Лейбницем и Вильгельмом Оранским, а в "Криптономиконе" - с Аланом Тьюрингом и генералом Макартуром. Таким образом фикшен переплетается с нон-фикшеном: "Барочный цикл" до сих пор остается моим основным источником знаний о 17-18 веках в Европе.
И вот недавно я нашел книгу, которая во многом похожа на "Криптономикон" по духу, будучи при этом полностью нон-фикшеном. Это "Отряд отморозков" (в оригинале The Bastard Brigade) - популярно рассказанная история о том, какие открытия привели к возможности создания атомной бомбы и как правительственные агентства пытались помешать немецкому Урановому Клубу ее все-таки создать.
Помимо того, что книга просто затягивает как увлекательный action, в ней ощущаются какие-то параллели с настоящим. Незадолго до большой войны какие-то умники придумали неожиданно мощную технологию, которую сложно контролировать, и вдруг все озаботились тем, что плохие (или просто недостаточно осторожные) ребята откроют ящик Пандоры, который уничтожит человечество. Ничего не напоминает, господа машинлернеры?
Пилю один прототип, нужно гонять инференс относительно тяжелых моделей, но мало и нечасто. Так я добрался потрогать кое-что из современного GPU serverless - Replicate и Runpod.
Replicate - относительно модный стартап, из W20 батча YCombinator, они фокусируются на чистом serverless. Довольно богатый набор популярных опенсорс моделей, собственно, ради одной из них я и пришел - разворачивать инференс своими руками было немного лень. Для выкатывания своих моделей предлагают использовать Cog, я с этим фреймворком не сталкивался, но выглядит перспективно. В целом продукт выглядит причесанным, но недешевым: там есть всего два вида GPU, T4 GPU за $0.00055 per second и A100 (40GB) за $0.0023 per second.
Потому я глянул и на Runpod. Они более известны не serverless платформой, а обычными GPU нодами, которые у них тоже есть, причем куда дешевле больших популярных облаков типа AWS. Но serverless тоже есть, и тоже довольно простой в освоении: нужно написать хендлер для их библиотеки, похожий на обычную лямбду, запаковать в докер и готово. Доступно несколько разных GPU, и даже самая мощная A100 (80Gb) всего $0.001 per second. Но надо понимать, что прайсинг хитрый: дополнительно оплачивается диск, дополнительно оплачивается idle (если не хотите, чтобы воркер сразу вырубался после одного запроса). Хвастаются, что колдстарт оптимизирован, сам я всерьез не бенчмаркал. Еще понравилась возможность настраивать параметры скейлинга вручную, в обычных лямбдах иногда не хватало такой гибкости.
В комментарии отдельно приглашаются эксперты, которые очень хотят рассказать, что serverless - говно, а деды завещали использовать bare metal.
Replicate - относительно модный стартап, из W20 батча YCombinator, они фокусируются на чистом serverless. Довольно богатый набор популярных опенсорс моделей, собственно, ради одной из них я и пришел - разворачивать инференс своими руками было немного лень. Для выкатывания своих моделей предлагают использовать Cog, я с этим фреймворком не сталкивался, но выглядит перспективно. В целом продукт выглядит причесанным, но недешевым: там есть всего два вида GPU, T4 GPU за $0.00055 per second и A100 (40GB) за $0.0023 per second.
Потому я глянул и на Runpod. Они более известны не serverless платформой, а обычными GPU нодами, которые у них тоже есть, причем куда дешевле больших популярных облаков типа AWS. Но serverless тоже есть, и тоже довольно простой в освоении: нужно написать хендлер для их библиотеки, похожий на обычную лямбду, запаковать в докер и готово. Доступно несколько разных GPU, и даже самая мощная A100 (80Gb) всего $0.001 per second. Но надо понимать, что прайсинг хитрый: дополнительно оплачивается диск, дополнительно оплачивается idle (если не хотите, чтобы воркер сразу вырубался после одного запроса). Хвастаются, что колдстарт оптимизирован, сам я всерьез не бенчмаркал. Еще понравилась возможность настраивать параметры скейлинга вручную, в обычных лямбдах иногда не хватало такой гибкости.
В комментарии отдельно приглашаются эксперты, которые очень хотят рассказать, что serverless - говно, а деды завещали использовать bare metal.
Видел недавно вакансию, в которой была формулировка "интерес к промт-инженирингу и отсутствие снобизма по этому поводу". Так вот, у меня есть пусть и не снобизм, но некоторый скепсис.
Типичная работа с промптами - это не инжиниринг, а скорее алхимия. Алхимия - это уже не шаманские ритуалы (не способные повторяемо вызвать дождь вопреки мнению камлающего), а протонаука, которая, хоть и содержала в себе много странного по современным меркам, иногда приводила к неплохим результатам (см. например историю открытия фарфора в Европе). Да, есть набор полезных эвристик типа chain of thought, который помогает выжать больше пользы из вашей любимой LLM, и вообще сколько-то воспроизводимы между разными задачами/моделями. Но воспроизводимость оставляет желать лучшего, и если что-то не работает, то для подавляющего большинства адептов промпт-инжиниринга остается только перебор этих самых эвристик из твиттера и awesome-prompt-engineering списков.
Или вот еще видел формулировку "Need to setup ChatGPT prompts that guarantee...". Ага, конечно, промпты к внешнему черному ящику с гарантией, и немного философского камня заодно.
Важное примечание, чтобы не считаться совсем луддитом: штуки типа P-tuning - это уже не алхимия, и в работе со своими - не 3rd party API - LLM можно добывать какие-то гарантии (см, например, guidance).
Кто-то возразит, что вообще-то весь ML такой, но я так не думаю. Да, есть какие-то вещи, в которых результат малопредсказуем без экспериментов, но для значительного количества ML проблем у профессионалов есть интуиция, как к этому осмысленно подойти, как найти боттлнек и точку для улучшения. А вот текущие практики промпт-инжиниринга скорее похожи на "в любой сложной ситуации давайте перебирать гиперпараметры", что попахивает магическим мышлением.
Наверное, я уже похож на тех дедов, которые восемь лет назад бубнили "да что этот ваш ML, сейчас я напишу ифов с регулярками, и норм" и "к черту ваш диплернинг, сейчас SVM поверх HOG обучим и хватит".
Типичная работа с промптами - это не инжиниринг, а скорее алхимия. Алхимия - это уже не шаманские ритуалы (не способные повторяемо вызвать дождь вопреки мнению камлающего), а протонаука, которая, хоть и содержала в себе много странного по современным меркам, иногда приводила к неплохим результатам (см. например историю открытия фарфора в Европе). Да, есть набор полезных эвристик типа chain of thought, который помогает выжать больше пользы из вашей любимой LLM, и вообще сколько-то воспроизводимы между разными задачами/моделями. Но воспроизводимость оставляет желать лучшего, и если что-то не работает, то для подавляющего большинства адептов промпт-инжиниринга остается только перебор этих самых эвристик из твиттера и awesome-prompt-engineering списков.
Или вот еще видел формулировку "Need to setup ChatGPT prompts that guarantee...". Ага, конечно, промпты к внешнему черному ящику с гарантией, и немного философского камня заодно.
Важное примечание, чтобы не считаться совсем луддитом: штуки типа P-tuning - это уже не алхимия, и в работе со своими - не 3rd party API - LLM можно добывать какие-то гарантии (см, например, guidance).
Кто-то возразит, что вообще-то весь ML такой, но я так не думаю. Да, есть какие-то вещи, в которых результат малопредсказуем без экспериментов, но для значительного количества ML проблем у профессионалов есть интуиция, как к этому осмысленно подойти, как найти боттлнек и точку для улучшения. А вот текущие практики промпт-инжиниринга скорее похожи на "в любой сложной ситуации давайте перебирать гиперпараметры", что попахивает магическим мышлением.
Наверное, я уже похож на тех дедов, которые восемь лет назад бубнили "да что этот ваш ML, сейчас я напишу ифов с регулярками, и норм" и "к черту ваш диплернинг, сейчас SVM поверх HOG обучим и хватит".
Минутка рекламы: у издательства, в котором выпускается наша Machine Learning System Design книга (кстати, в early access уже семь глав), сейчас идет большая распродажа - 50% скидки на электронные и 40% на печатные версии всех книг.
Так что даже если ML дизайн вас не интересует (например, вы услышали от модного спикера, что он сломан, и совершенно разочаровались), можете поискать в каталоге что-то менее сломанное.
Так что даже если ML дизайн вас не интересует (например, вы услышали от модного спикера, что он сломан, и совершенно разочаровались), можете поискать в каталоге что-то менее сломанное.
Есть классическая картинка для иллюстрации жизненного цикла технологических инноваций - Gartner Hype Cycle. Он, конечно, скорее про adoption компаниями, но почему бы не натянуть эту фигуру и на отдельного индивида? Кажется, что прошло уже достаточно времени, чтобы ChatGPT прошел через этот hype cycle персонально для меня и достиг плато продуктивности: равномерное использование, выжившие юзкейсы, отсутствие восторгов и разочарований.
Так вот, лично у меня сложилось четыре явных паттерна использования:
1) Бюрократ-копирайтер
2) Поверхностный эрудит
3) Junior software engineer
4) Въедливый критик
"-вываливай в продакшен.
Это именно персональные примеры использования, а не приложения вокруг API. Хотя я как раз использую не веб-интерфейс, а консольный heygpt: он быстрее, удобнее и даже дешевле, чем обычная подписка на GPT-4.
Расскажите в комментариях про сложившиеся у вас паттерны!
Так вот, лично у меня сложилось четыре явных паттерна использования:
1) Бюрократ-копирайтер
"Перепиши этот месседж для официального емейла / обращения в службу поддержки / аппликейшена в организацию / маркетингового описания"
. В общем, для переписывания текста. Например, так пишутся жалобы в банк, заблокировавший транзакцию, или описание биографии для сайта издательства.2) Поверхностный эрудит
"Опиши состояние дел в какой-то области / объясни с учетом моего уровня (не)знания в соседних областях"
. Примеры вопросов: какой софт используют 3д художники для работы с текстурами? чем replacement map отличается от height map? какие острова на Азорах выбрать для недельного отпуска, если меня интересуют хайки и природные достопримечательности? какие прикладные применения сверхпроводимости? Дьявол обычно в деталях, и слишком глубоко закапываться с LLM не стоит, но можно быстро получить поверхностное понимание.3) Junior software engineer
"Напиши прототип такой штуки, используя этот незнакомый мне, но популярный в целом API".
Из последнего: делал так ORM на SQLAlchemy и blender-скрипты для headless рендеринга. В обоих случаях хочется, чтобы оно хоть как-то работало, а разбираться в апи не хочется - не предполагаю, что этот код нужно будет долго поддерживать или развивать.4) Въедливый критик
"
Найди недостатки и корнеркейсы в следующей идее/коде/тексте: {{INSERT YOUR STUFF}}
". Люди неплохо справляются с поиском подтверждений своей идеи или дизайна (confirmation bias и его друзья), а по-хорошему надо искать опровержения и логические нестыковки. Кстати, отлично сочетается с предыдущим режимом использования: напиши-покритикуй-исправьЭто именно персональные примеры использования, а не приложения вокруг API. Хотя я как раз использую не веб-интерфейс, а консольный heygpt: он быстрее, удобнее и даже дешевле, чем обычная подписка на GPT-4.
Расскажите в комментариях про сложившиеся у вас паттерны!
Очередная (см. ранее) история ускорения, в которой не понадобились никакие знания алгоритмов.
Пилю на досуге одну задачку, которая в некотором смысле сводится к семантической сегментации. Правда, у этой сегментации есть несколько нюансов: несколько подзадач, у каждого семпла может быть подмножество масок, разного размера, но все довольно жирные (по ~30 мегабайт в PNG). Таким образом, первая версия пайплайна, которую я написал в лоб, не могла загрузить даже слабенькую GPU, подготовка батчей занимала слишком много времени, около секунды на семпл. Учитывая, что это все крутится на арендном железе, оставалась опция купить тачку с кучей CPU ядер, но я слишком жадный.
В общем, надо было как-то эффективнее перепаковать данные. Коллега посоветовал deeplake, и на первый взгляд он выглядел многообещающе. На практике же оказалось, что все красиво на бумаге, а с реальным датасетом все сильно хуже. Наверное, если бы мои картинки были всегда одинакового шейпа, а набор масок для семплов был бы одинаковым, все пошло бы гладко. Но мой датасет, собранный с бору по сосенке, был слишком неконсистентным, и через пару часов ковыряния с deeplake мне надоело придумывать костыли для инструмента, который вроде как должен упростить мне жизнь, а не усложнить.
Не будь у меня ограничений по диску, единожды перепаковать все каким-нибудь
Помимо древнего zip, есть и более современные алгоритмы быстрой компрессии, например, LZ4 или Zstandard. Я выбрал zstd (поверхностный гуглинг подсказал, что он более гибкий на спектре от быстрого до компактного сжатия) инаписал сгенерил примерно пятнадцать строк простой обертки и еще чуть больше для скрипта препроцессинга.
Степень сжатия пока даже не тюнил, а выбрал наугад. В результате загрузка данных ускорилась примерно в четыре раза, а размер датасета вырос на 10% по сравнению с PNG.
Пилю на досуге одну задачку, которая в некотором смысле сводится к семантической сегментации. Правда, у этой сегментации есть несколько нюансов: несколько подзадач, у каждого семпла может быть подмножество масок, разного размера, но все довольно жирные (по ~30 мегабайт в PNG). Таким образом, первая версия пайплайна, которую я написал в лоб, не могла загрузить даже слабенькую GPU, подготовка батчей занимала слишком много времени, около секунды на семпл. Учитывая, что это все крутится на арендном железе, оставалась опция купить тачку с кучей CPU ядер, но я слишком жадный.
В общем, надо было как-то эффективнее перепаковать данные. Коллега посоветовал deeplake, и на первый взгляд он выглядел многообещающе. На практике же оказалось, что все красиво на бумаге, а с реальным датасетом все сильно хуже. Наверное, если бы мои картинки были всегда одинакового шейпа, а набор масок для семплов был бы одинаковым, все пошло бы гладко. Но мой датасет, собранный с бору по сосенке, был слишком неконсистентным, и через пару часов ковыряния с deeplake мне надоело придумывать костыли для инструмента, который вроде как должен упростить мне жизнь, а не усложнить.
Не будь у меня ограничений по диску, единожды перепаковать все каким-нибудь
np.savez
было бы эффективно: размен разового препроцессинага на быстрый IO. Но это бы раздуло датасет в несколько раз, тоже не очень. Есть np.savez_compressed
, который еще и зипует, но он убивает все преимущества в скорости. Так я пришел к тому, что мне нужен аналог np.savez_compressed
на стероидах.Помимо древнего zip, есть и более современные алгоритмы быстрой компрессии, например, LZ4 или Zstandard. Я выбрал zstd (поверхностный гуглинг подсказал, что он более гибкий на спектре от быстрого до компактного сжатия) и
Степень сжатия пока даже не тюнил, а выбрал наугад. В результате загрузка данных ускорилась примерно в четыре раза, а размер датасета вырос на 10% по сравнению с PNG.
Telegram
partially unsupervised
Досталась мне на работе система, за которую до недавних пор отвечал умный, но неопытный PhD. Задача по сути сводится к text classification, внутри некий трансформер и все по классике: много кастомного, вычурный оптимайзер, дубликаты в данных и так далее.…
Каждый раз, когда я пишу здесь про книгу, случается отток подписчиков. Но я напишу еще, тем более, что есть сразу три повода (а больше писать особо не о чем, я в отпуске, а потому вместо работы гуляю по хайкам и смотрю там на коров 🐮).
Во-первых, получил письмо с многообещающим топиком "MANNING PUBLICATIONS CO. LLC has sent you money" 💰. $443.37 USD до налогов. Если хотите стать писателем ради наживы, подумайтедважды трижды.
Во-вторых, в early access вышла 9 глава про error analysis, на мой вкус, одна из самых ценных. Если бы меня спросили, какие три главы нужно осилить, чтобы условно из миддла стать могучим сеньором, я бы посоветовал 2, 9, 16 - Is there a problem?, Error analysis, Ownership and maintenance. Две из трех уже доступны, так что несите ваши денежки издательству! В эту главу в т.ч. много контрибьютил Богдан, за что ему спасибо.
В-третьих, пришли результаты внешнего ревью - издательство семплит сколько-то внешних экспертов из числа потенциальных читателей, дает им бесплатную копию и заставляет заполнить длинную анкету. Наблюдается явный прогресс: первое ревью - average star rating is 3.75, второе ревью - average star rating is 4.36. Причем некоторые ревьюверы участвовали дважды (почти год назад и сейчас), и явно отмечают улучшение в т.ч. по ранним главам ("It has improved and I congratulate the authors for it"). За это, кстати, отдельное спасибо читателям, которые присылают комментарии и дополнения.
Среди отзывов ревьюверов, конечно, попадается и странное - вот мой любимый: "When I read the title, I thought the book should explain how install a tool such as MLFlow or Kubeflow" 🤯
Напоследок пара дополнительных ссылок:
- интервью у Антона про книгу, обсуждали некоторые спорные моменты и процесс написания;
- отзыв на книгу от Тани.
Во-первых, получил письмо с многообещающим топиком "MANNING PUBLICATIONS CO. LLC has sent you money" 💰. $443.37 USD до налогов. Если хотите стать писателем ради наживы, подумайте
Во-вторых, в early access вышла 9 глава про error analysis, на мой вкус, одна из самых ценных. Если бы меня спросили, какие три главы нужно осилить, чтобы условно из миддла стать могучим сеньором, я бы посоветовал 2, 9, 16 - Is there a problem?, Error analysis, Ownership and maintenance. Две из трех уже доступны, так что несите ваши денежки издательству! В эту главу в т.ч. много контрибьютил Богдан, за что ему спасибо.
В-третьих, пришли результаты внешнего ревью - издательство семплит сколько-то внешних экспертов из числа потенциальных читателей, дает им бесплатную копию и заставляет заполнить длинную анкету. Наблюдается явный прогресс: первое ревью - average star rating is 3.75, второе ревью - average star rating is 4.36. Причем некоторые ревьюверы участвовали дважды (почти год назад и сейчас), и явно отмечают улучшение в т.ч. по ранним главам ("It has improved and I congratulate the authors for it"). За это, кстати, отдельное спасибо читателям, которые присылают комментарии и дополнения.
Среди отзывов ревьюверов, конечно, попадается и странное - вот мой любимый: "When I read the title, I thought the book should explain how install a tool such as MLFlow or Kubeflow" 🤯
Напоследок пара дополнительных ссылок:
- интервью у Антона про книгу, обсуждали некоторые спорные моменты и процесс написания;
- отзыв на книгу от Тани.
Понравился LiteLLM - LLM Ops здорового человека. TL;DR: тонкий враппер с общим поверх популярных провайдеров LLM, с кэшированием, обработкой ошибок и бюджетированием.
Вообще я не спец в LLM, но сделал сколько-то прототипов на коленке, и считаю, что правильный воркфлоу - делать proof of concept поверх самого дорогого и предсказуемого на текущий момент API (читай GPT-4), и держать в уме опцию миграции в будущем. Уже в паблике есть и жирная Falcon-180B 🐪, и крутой для своего размера Mistral 7B 🇫🇷, и разные затюненные Llama-2. Лень сетапить инференс - пожалуйста, есть Replicate или Deepinfra.com под ваш форк Лламы, и Antropic через AWS Bedrock; все они обойдутся дешевле, чем GPT.
Если совсем полетит, то на собранном датасете можно будет тюнить свою кастомную модель, если лицензия позволит 🏴☠️. Но скорее всего, YAGNI.
Вообще я не спец в LLM, но сделал сколько-то прототипов на коленке, и считаю, что правильный воркфлоу - делать proof of concept поверх самого дорогого и предсказуемого на текущий момент API (читай GPT-4), и держать в уме опцию миграции в будущем. Уже в паблике есть и жирная Falcon-180B 🐪, и крутой для своего размера Mistral 7B 🇫🇷, и разные затюненные Llama-2. Лень сетапить инференс - пожалуйста, есть Replicate или Deepinfra.com под ваш форк Лламы, и Antropic через AWS Bedrock; все они обойдутся дешевле, чем GPT.
Если совсем полетит, то на собранном датасете можно будет тюнить свою кастомную модель
GitHub
GitHub - BerriAI/litellm: Python SDK, Proxy Server (LLM Gateway) to call 100+ LLM APIs in OpenAI format - [Bedrock, Azure, OpenAI…
Python SDK, Proxy Server (LLM Gateway) to call 100+ LLM APIs in OpenAI format - [Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropic, Sagemaker, HuggingFace, Replicate, Groq] - BerriAI/litellm
Совсем недавно казалось, что эпоха локальных вычислений окончательно ушла, уступив облакам. В начале года я достал из компьютера старые видюхи, завернул в пузырчатую пленку и за малые гроши отправил в Лодзинское воеводство. Сентиментально вспоминал, как покупал первую в 2016, чтобы осваивать deep learning, потом майнил казавшуюся важной ачивку kaggle master, а в промежутках - Ethereum. Радиатор одной из карт был надпилен: слегка не влазила в канплюктер, пришлось избавиться от нескольких мм металла. Потом карточки пару лет пылились в Минске и ждали, пока подвернется оказия их передать. Впрочем, к этому времени они уже потеряли всякую актуальность: даже в бесплатном Google Colab GPU мощнее, а на паре старых консьмерских видюх ничего обучить нельзя - так, для дебага в лучшем случае.
А потом внезапно случился ренессанс: в паблик ушли веса Llama (а дальше и Llama 2) и сотни их файнтюнов, появился llama.cpp, агрессивная квантизация до пяти бит, на реддите /r/LocalLLaMA бешеные тыщи энтузиастов жонглируют свежими релизами и обсуждают, какую железку купить для домашнего инференса очередной опенсорсной LLM и почему это Mac Studio.
Я тоже под шумок решил обновить компьютер для зимнего обогрева. Воткнул в освободившийся слот видеокарту посвежее, SSD побыстрее и новый wifi-адаптер вместо потерянного при переездах. И словно провалился в прошлое: как в давние времена нужно читать мануалы, разбираться, какие комбинации слотов предпочтительнее ("When an M.2 device in PCIe mode is installed, PCIe x16_2 slot only runs at x1 mode"), подбирать wifi драйвера для богом забытого чипа и недоумевать, почему видеокарта при нагрузке делает hard reset.
Впрочем, в GPT-guided эпоху это все оказалось куда проще. Раньше возня с драйверами могла занять все выходные, а иногда даже ни к чему не привести; сейчас в интерактивном режиме ("у меня не работает X, вот аутпут dmesg, help me diagnose it step by step") с этим может справиться любой нормис вроде меня. Слава роботам! 🤖
А потом внезапно случился ренессанс: в паблик ушли веса Llama (а дальше и Llama 2) и сотни их файнтюнов, появился llama.cpp, агрессивная квантизация до пяти бит, на реддите /r/LocalLLaMA бешеные тыщи энтузиастов жонглируют свежими релизами и обсуждают, какую железку купить для домашнего инференса очередной опенсорсной LLM
Я тоже под шумок решил обновить компьютер для зимнего обогрева. Воткнул в освободившийся слот видеокарту посвежее, SSD побыстрее и новый wifi-адаптер вместо потерянного при переездах. И словно провалился в прошлое: как в давние времена нужно читать мануалы, разбираться, какие комбинации слотов предпочтительнее ("When an M.2 device in PCIe mode is installed, PCIe x16_2 slot only runs at x1 mode"), подбирать wifi драйвера для богом забытого чипа и недоумевать, почему видеокарта при нагрузке делает hard reset.
Впрочем, в GPT-guided эпоху это все оказалось куда проще. Раньше возня с драйверами могла занять все выходные, а иногда даже ни к чему не привести; сейчас в интерактивном режиме ("у меня не работает X, вот аутпут dmesg, help me diagnose it step by step") с этим может справиться любой нормис вроде меня. Слава роботам! 🤖
Поскольку ничего выдающегося в работе не происходит, а всю аналитику про OpenAI, которой был еще недавно переполнен интернет, я бы для себя прагматично выразил одной картинкой, лучше посоветую книгу.
Дочитываю "Создание атомной бомбы" Роудса и не устаю рекомендовать вообще всем знакомым. Она комплиментарна "Отряду отморозков", который я рекомендовал ранее, и фильму про Оппенгеймера, только на порядок шире и глубже. Начинается с историй о том, как в конце 19 века Резерфорд копал картошку в Новой Зеландии, а Бор играл в футбол и читал Кьеркегора, и дальше слой за слоем раскрывает, что привело к созданию бомбы. Роудс не физик, а историк, но достаточно глубоко погружается в физику, и даже нормис типа меня может в общих чертах понять, на каких умозаключениях основывались ключевые открытия, как дизайнили первые реакторы и чем U-235 отличается от U-238.
Книга огромная и плотная, почти тыща страниц, почти три тыщи сносок, Пулитцеровская премия 1988 года, вездесущие параллели про войны, вынужденные миграции и непубликацию свежего ресерча из-за беспокойства про superalignment.
Дочитываю "Создание атомной бомбы" Роудса и не устаю рекомендовать вообще всем знакомым. Она комплиментарна "Отряду отморозков", который я рекомендовал ранее, и фильму про Оппенгеймера, только на порядок шире и глубже. Начинается с историй о том, как в конце 19 века Резерфорд копал картошку в Новой Зеландии, а Бор играл в футбол и читал Кьеркегора, и дальше слой за слоем раскрывает, что привело к созданию бомбы. Роудс не физик, а историк, но достаточно глубоко погружается в физику, и даже нормис типа меня может в общих чертах понять, на каких умозаключениях основывались ключевые открытия, как дизайнили первые реакторы и чем U-235 отличается от U-238.
Книга огромная и плотная, почти тыща страниц, почти три тыщи сносок, Пулитцеровская премия 1988 года, вездесущие параллели про войны, вынужденные миграции и непубликацию свежего ресерча
Есть два стула AI стартапа: в каком сам будешь работать, какой подписчикам предложишь?..
P.S. этот пост может использоваться в качестве теста на возраст.
P.S. этот пост может использоваться в качестве теста на возраст.
Если бы год назад мне сказали, что французская компания будет двигать вперед опенсорсный AI, я бы подумал, что собеседник неадекватен. Когда Mistral AI только поднял свой первый раунд по оценке в ~300 миллионов, не имея ничего, кроме трех крутых фаундеров, я тоже смотрел на это скептически. Хаха, французы решили сделать deep tech компанию 🥐🥖🍷🧀, все равно получится пекарня или профсоюз. Я был сильно не прав.
Спустя полгода их вышедшая меньше двух недель назад Mixtral показывает лучший результат среди опенсорсных моделей, уверенно обходя GPT 3.5 на лидерборде. Ее можно гонять на более или менее доступном железе, у нее свободная лицензия Apache, и ее вовсю успешно файнтюнят. Буквально вчера наткнулся на один такой нецензурированный вариант и - сугубо из любопытства - начал баловаться с запрещенными темами.
Модель дает неплохие советы, где скачать пиратский контент, как вести партизанские действия в городской застройке, как хитрить с налогами, не пытаясь при этом быть моральным компасом. Промпты про написание шуток, высмеивающие те или иные социальные группы, ее слегка корежат, но в итоге можно добиться несмешного, но осмысленного ответа, не утыкаясь в стену OpenAI's content policies.
Спустя полгода их вышедшая меньше двух недель назад Mixtral показывает лучший результат среди опенсорсных моделей, уверенно обходя GPT 3.5 на лидерборде. Ее можно гонять на более или менее доступном железе, у нее свободная лицензия Apache, и ее вовсю успешно файнтюнят. Буквально вчера наткнулся на один такой нецензурированный вариант и - сугубо из любопытства - начал баловаться с запрещенными темами.
Модель дает неплохие советы, где скачать пиратский контент, как вести партизанские действия в городской застройке, как хитрить с налогами, не пытаясь при этом быть моральным компасом. Промпты про написание шуток, высмеивающие те или иные социальные группы, ее слегка корежат, но в итоге можно добиться несмешного, но осмысленного ответа, не утыкаясь в стену OpenAI's content policies.
mistral.ai
Mixtral of experts | Mistral AI
A high quality Sparse Mixture-of-Experts.
Знакомый рекрутер познакомил с парой LLM-стартапов, оба недавно подняли pre-seed раунд, оба ищут первых сотрудников (второй и пятый hire, если быть точным). Я поговорил с двумя фаундерами, и прям "два мира - два Шапиро".
Компания A: "нам нужен человек с глубокой экспертизой в LLM, а предыдущий опыт нас не интересует - LLM слишком своеобразны, и оверфит человеков на других технологии скорее даже вредит". В итоге после пары интервью "we decided to move forward with some other candidates at this stage is more significant experience with LLMs", несмотря на "no person we interviewed for the roles had better coding abilities" (хотя последнее - это слабый флекс, задачка была не бей лежачего).
Компания B: "нам нужен человек с обширным и разнообразным опытом, ведь мы пока плохо понимаем, что и как будем делать, и наверняка неоднократно переобуемся по пути. Не читал свежие статьи по LLM? Фигня вопрос, наверстаешь, лучше расскажи, с какими необычными технологиями ты возился!" (слегка удивить удалось только упоминанием шейдеров).
Риторический вопрос для подписчиков: угадайте, в какой компании фаундер из FAANG.
Компания A: "нам нужен человек с глубокой экспертизой в LLM, а предыдущий опыт нас не интересует - LLM слишком своеобразны, и оверфит человеков на других технологии скорее даже вредит". В итоге после пары интервью "we decided to move forward with some other candidates at this stage is more significant experience with LLMs", несмотря на "no person we interviewed for the roles had better coding abilities" (хотя последнее - это слабый флекс, задачка была не бей лежачего).
Компания B: "нам нужен человек с обширным и разнообразным опытом, ведь мы пока плохо понимаем, что и как будем делать, и наверняка неоднократно переобуемся по пути. Не читал свежие статьи по LLM? Фигня вопрос, наверстаешь, лучше расскажи, с какими необычными технологиями ты возился!" (слегка удивить удалось только упоминанием шейдеров).
Риторический вопрос для подписчиков: угадайте, в какой компании фаундер из FAANG.
В разговорах с корешами сформулировал для себя нехитрую трехфакторную модель мотивации: процесс - цель - условия. Подчеркну "для себя" - вряд ли это универсальный фреймворк, но вдруг кому-то тоже зайдет. Попробую описать на примерах работы, но кажется, что обобщается и на прочие дела.
Процесс - собственно суть занятия (пилить пайплайны, читать свежие пейперы, ревьювить код джунов). Это кусок краткосрочной мотивации: писать хендлеры или делать фит-предикт обычно неинтересно, профайлить и оптимизировать обычно интересно. В моменте это драйвит, но если это единственная мотивация, в моменте рефлексии может накрыть мыслями "а нахера все это". И тут вылазит цель.
Цель - среднесрочная или долгосрочная, которая заставляет делать даже скучные вещи из пункта выше. Например, make the world a better place, или получить промо и стать архисеньором, или успешно сделать стартап и продать его за много миллионов, или обрести славу самой умной лягушки в пруду, чтобы все вокруг завороженно слушали твое "ква!"🐸. Цель совершенно необязательно высокая, срубить шальных денег и кутить с эскортницами - тоже вполне себе цель. Ради цели можно и унылыми делами заняться.
Условия - это скорее коэффициент для суммы двух предыдущих мотиваций. Офис с печеньками, приятные коллеги, годная инфраструктура - все идет сюда. Деньги в формате зарплаты (а точнее некоторого ее отклонения от среднерыночной) сюда же: ради Большой Цели можно и потерпеть -20% (на это стартаперы и покупают юных мечтателей).
Можно подобрать пример из другой сферы: я в целом люблю бегать (процесс) и хочу пробежать полумарафон (цель). Это позволяет выйти из дома даже в плохую погоду (условия) и преодолеть лень. Когда погода хорошая, а около дома большой парк, то и никаких усилий не понадобится 🏃♂️.
Напоследок про actionability: в случае фрустрации можно декомпозировать, в каком факторе просадка - так становится понятнее, что можно сделать. Где-то по мелочи улучшить условия (пофиксить flaky тесты из-за которых постоянно валится CI или купить нормальные беговые кроссовки), где-то добиться более интересных штук в моменте (шаг 0: поговорить с менеджером и хотя бы в явном виде донести свои предпочтения). С целью, конечно, сложнее всего - там малыми шагами ситуацию обычно не изменить.
Процесс - собственно суть занятия (пилить пайплайны, читать свежие пейперы, ревьювить код джунов). Это кусок краткосрочной мотивации: писать хендлеры или делать фит-предикт обычно неинтересно, профайлить и оптимизировать обычно интересно. В моменте это драйвит, но если это единственная мотивация, в моменте рефлексии может накрыть мыслями "а нахера все это". И тут вылазит цель.
Цель - среднесрочная или долгосрочная, которая заставляет делать даже скучные вещи из пункта выше. Например, make the world a better place, или получить промо и стать архисеньором, или успешно сделать стартап и продать его за много миллионов, или обрести славу самой умной лягушки в пруду, чтобы все вокруг завороженно слушали твое "ква!"🐸. Цель совершенно необязательно высокая, срубить шальных денег и кутить с эскортницами - тоже вполне себе цель. Ради цели можно и унылыми делами заняться.
Условия - это скорее коэффициент для суммы двух предыдущих мотиваций. Офис с печеньками, приятные коллеги, годная инфраструктура - все идет сюда. Деньги в формате зарплаты (а точнее некоторого ее отклонения от среднерыночной) сюда же: ради Большой Цели можно и потерпеть -20% (на это стартаперы и покупают юных мечтателей).
Можно подобрать пример из другой сферы: я в целом люблю бегать (процесс) и хочу пробежать полумарафон (цель). Это позволяет выйти из дома даже в плохую погоду (условия) и преодолеть лень. Когда погода хорошая, а около дома большой парк, то и никаких усилий не понадобится 🏃♂️.
Напоследок про actionability: в случае фрустрации можно декомпозировать, в каком факторе просадка - так становится понятнее, что можно сделать. Где-то по мелочи улучшить условия (пофиксить flaky тесты из-за которых постоянно валится CI или купить нормальные беговые кроссовки), где-то добиться более интересных штук в моменте (шаг 0: поговорить с менеджером и хотя бы в явном виде донести свои предпочтения). С целью, конечно, сложнее всего - там малыми шагами ситуацию обычно не изменить.
Мы с Валерой не так давно закончили последнюю главу в нашей книжке про ML System Design, и пока она проходит через все остальные стадии паблишинга, решили адаптировать тот же контент под другие форматы. Хоть я сам задрот старой школы и предпочитаю читать, кажется, что я в меньшинстве: многие хотят большей вовлеченности, послушать говоряшую голову, посмотреть на спикера в зуме и задавать там же вопросы.
По этому поводу думаем провести курс в формате онлайн-лекций. Контент концептуально тот же, две лекции в неделю, на английском с британским и/или славянским акцентом, платно на том уровне, чтобы окупить наше время по обычной ставке, возможны приглашенные эксперты. Если наберется достаточно желающих в Лондоне или Варшаве, устроим гибридный формат (например, вещание из пивнухи 🍺).
Пока что сделали опросник, чтобы понять интерес к этой идее. Если вам интересно, заполните, пожалуйста - это поможет понять ожидания и адаптироваться под них.
По этому поводу думаем провести курс в формате онлайн-лекций. Контент концептуально тот же, две лекции в неделю, на английском с британским и/или славянским акцентом, платно на том уровне, чтобы окупить наше время по обычной ставке, возможны приглашенные эксперты. Если наберется достаточно желающих в Лондоне или Варшаве, устроим гибридный формат (например, вещание из пивнухи 🍺).
Пока что сделали опросник, чтобы понять интерес к этой идее. Если вам интересно, заполните, пожалуйста - это поможет понять ожидания и адаптироваться под них.
Я редко пишу здесь про новости, но про очередной релиз нового семейства LLM - на этот раз Claude 3 от Anthropic - напишу.
Дело даже не в том, что они утверждают, что побили GPT-4 по метрикам. Это первая модель, которая с первой попытки правильно ответила на вопрос, которым я люблю тестировать LLM-ки: "what manhattan project participant invented the dolphin kick for swimming?" 🐬. Остальные популярные модели (GPT-4, Mistral Large, Llama 2 70B...) или скатываются в галлюцинации (обычно про Фейнмана), или отвечают в духе "уважаемый, там физики работали, какое еще плавание".
Вопрос, конечно, вдохновлен этой книгой. На более нормальные промпты, которые я успел прогнать, кажется, отвечает +- на уровне GPT.
Дело даже не в том, что они утверждают, что побили GPT-4 по метрикам. Это первая модель, которая с первой попытки правильно ответила на вопрос, которым я люблю тестировать LLM-ки: "what manhattan project participant invented the dolphin kick for swimming?" 🐬. Остальные популярные модели (GPT-4, Mistral Large, Llama 2 70B...) или скатываются в галлюцинации (обычно про Фейнмана), или отвечают в духе "уважаемый, там физики работали, какое еще плавание".
Вопрос, конечно, вдохновлен этой книгой. На более нормальные промпты, которые я успел прогнать, кажется, отвечает +- на уровне GPT.
Человек пришел в некий банк, чтобы закрыть мой счет по доверенности. В процессе у него спрашивают пароль от интернет-банка. Нахожу предполагаемый пароль в Bitwarden, передаю, и получаю ответ "не подходит, и даже не похож".
Или операционисты в банках научились считать похожесть по соленым хэшам, или это худший театр безопасности, который я видел.
Или операционисты в банках научились считать похожесть по соленым хэшам, или это худший театр безопасности, который я видел.