LLM и новизна
Я часто слышал тезис "нейросети пока не могут создавать новое", и мне он видится несколько абсурдным. Хотя что-то в нём всё же есть.
Итак, допустим, нейросети и правда не могут создавать новое, а создавать новое в принципе возможно. Тогда я бы попросил у сторонников такой идеи метрику нового. Код на Питоне, куда я заряжаю файл, а он мне говорит "текст в этом файле новый на 5%, а картинки на 12.1%". Я просто возьму нейронку и оптимизирую её так, чтобы метрика была выше - либо через RL, либо через генетический алгоритм.
Но по странному стечению обстоятельство множества людей, говорящих "нейронки не создают новое" и людей, которые умеют писать метрики... Они практически не пересекаются.
Нет, в словах "нейронки не создают новое" всё-таки есть некоторый практический смысл, но надо приложить усилия, чтобы его извлечь. Итак, как бы я писал метрику новизны?
Я бы сравнивал файл/текст/картинку со всеми другими доступными и проверял бы долю совпадений. Может, придумал бы специализированную метрику, вроде тех, что применяет антиплагиат. То есть в этом месте мы уже отказались бы от какой-то универсальной метрики новизны и взяли бы узкоспециализированную, для решения задачи защиты от плагиата.
Но... Допустим. У какого объекта будет максимальная степень новизны? У случайного шума. Он будет меньше всего совпадать с любым другим текстом или картинкой. А если мы хотим, чтобы некий объект был практически полезен (например, чтобы текст решал наши проблемы), и при этом был новым - скорее всего, решением было бы некое зашумление "правильного" текста.
То есть если смотреть на новизну как на самоцель, она выглядит довольно абсурдной. Если я хочу текст, я обычно его хочу для решения каких-то моих задач - например, мне нужен интересный рассказ или работающий код. Закопаемся тут чуть глубже. Допустим, моя цель, которую я ставлю для LLM - получить интересный рассказ. Оригинальность делает его интереснее? Определённо. Значит, надо, чтобы нейронка делала оригинально? Нет, не надо. Пусть лучше нейронка просто делает интересно, добавляя ровно столько оригинальности и ровно в тех местах, где это нужно. И добивается цели "сделать интересно", а цель "сделать оригинально" будет её неявной подцелью.
Хорошо, а может ли оригинальность быть некоей вспомогательной метрикой? Может, LLM и генераторы картинок могут делать хорошо и интересно, но конкретно подцель "новизна" им недоступна, и потому всё, что они могут делать в области "интересно" ограничено множеством того, что "неоригинально".
Давайте проверим! Для начала, у генериативных моделей есть режим генерации с элементом рандома, и обычно он используется в качестве основного. То есть сделать оригинально для LLM не проблема, просто пусть сделает рандомно. Но... Практика показывает, что если повышать градус "новизны", то будет снижаться качество. Рассказ выйдет очень новым, но шизофреничным.
Хорошо, можно ли с этим как-то бороться? В голову приходят два варианта. Первый - использовать RLHF. Сообщать модельке, когда она сделала "оригинально", а когда нет, и менять её веса так, чтобы она чаще порождала "новые" тексты. Второй - сделать датасет, где тексты размечены на "оригинальные" и нет, и обучить модельку на таком датасете. А потом генерировать не один текст, а несколько, и оставлять только тот, у которого метрика оригинальности самая высокая.
И знаете, чему научится моделька? Метрике интересности, либо полезности. Люди не станут обозначать оригинальными тексты, которые непонятны, повреждены или похожи на шизофазию.
Я часто слышал тезис "нейросети пока не могут создавать новое", и мне он видится несколько абсурдным. Хотя что-то в нём всё же есть.
Итак, допустим, нейросети и правда не могут создавать новое, а создавать новое в принципе возможно. Тогда я бы попросил у сторонников такой идеи метрику нового. Код на Питоне, куда я заряжаю файл, а он мне говорит "текст в этом файле новый на 5%, а картинки на 12.1%". Я просто возьму нейронку и оптимизирую её так, чтобы метрика была выше - либо через RL, либо через генетический алгоритм.
Но по странному стечению обстоятельство множества людей, говорящих "нейронки не создают новое" и людей, которые умеют писать метрики... Они практически не пересекаются.
Нет, в словах "нейронки не создают новое" всё-таки есть некоторый практический смысл, но надо приложить усилия, чтобы его извлечь. Итак, как бы я писал метрику новизны?
Я бы сравнивал файл/текст/картинку со всеми другими доступными и проверял бы долю совпадений. Может, придумал бы специализированную метрику, вроде тех, что применяет антиплагиат. То есть в этом месте мы уже отказались бы от какой-то универсальной метрики новизны и взяли бы узкоспециализированную, для решения задачи защиты от плагиата.
Но... Допустим. У какого объекта будет максимальная степень новизны? У случайного шума. Он будет меньше всего совпадать с любым другим текстом или картинкой. А если мы хотим, чтобы некий объект был практически полезен (например, чтобы текст решал наши проблемы), и при этом был новым - скорее всего, решением было бы некое зашумление "правильного" текста.
То есть если смотреть на новизну как на самоцель, она выглядит довольно абсурдной. Если я хочу текст, я обычно его хочу для решения каких-то моих задач - например, мне нужен интересный рассказ или работающий код. Закопаемся тут чуть глубже. Допустим, моя цель, которую я ставлю для LLM - получить интересный рассказ. Оригинальность делает его интереснее? Определённо. Значит, надо, чтобы нейронка делала оригинально? Нет, не надо. Пусть лучше нейронка просто делает интересно, добавляя ровно столько оригинальности и ровно в тех местах, где это нужно. И добивается цели "сделать интересно", а цель "сделать оригинально" будет её неявной подцелью.
Хорошо, а может ли оригинальность быть некоей вспомогательной метрикой? Может, LLM и генераторы картинок могут делать хорошо и интересно, но конкретно подцель "новизна" им недоступна, и потому всё, что они могут делать в области "интересно" ограничено множеством того, что "неоригинально".
Давайте проверим! Для начала, у генериативных моделей есть режим генерации с элементом рандома, и обычно он используется в качестве основного. То есть сделать оригинально для LLM не проблема, просто пусть сделает рандомно. Но... Практика показывает, что если повышать градус "новизны", то будет снижаться качество. Рассказ выйдет очень новым, но шизофреничным.
Хорошо, можно ли с этим как-то бороться? В голову приходят два варианта. Первый - использовать RLHF. Сообщать модельке, когда она сделала "оригинально", а когда нет, и менять её веса так, чтобы она чаще порождала "новые" тексты. Второй - сделать датасет, где тексты размечены на "оригинальные" и нет, и обучить модельку на таком датасете. А потом генерировать не один текст, а несколько, и оставлять только тот, у которого метрика оригинальности самая высокая.
И знаете, чему научится моделька? Метрике интересности, либо полезности. Люди не станут обозначать оригинальными тексты, которые непонятны, повреждены или похожи на шизофазию.
👍9
Но... Неужели я сам считаю, что у LLM всё хорошо с "новизной" контента? Неужели рассказы от LLM не кажутся... Затёртыми? На самом деле у меня гораздо больше претензий к их логике. Тут персонаж не в характере, там наметили ружьё Чехона, а оно не выстрелило, тут всё идёт слишком гладко, хотя я запрашивал вот-это-повороты. И рассказы в целом слабоваты на динамику и эмоциональное напряжение. То есть не в новизне дело, а в том, что нейросетку не тюнили под написание рассказов.
Что же насчёт технических решений - я просил LLM предложить мне лечение на случай такой-то, либо технические задачи вроде "сделай мне самолёт". Ещё спрашивал вещи вроде "допустим, человек из нашего времени попал в Германию в 38м, и он хочет, чтобы она победила, у него знание истории и он инженер, что он сделает?".
Во всех этих случаях я вижу следующие проблемы:
1) LLM чересчур абстрактно рассуждает. Не описывает конкретные... Слабые точки, которые позволяют решить задачу. А описывает верхнеуровневые планы. Вроде "как сделать AGI"? LLM: "надо сделать логический движок для рассуждений, базу данных, коннекторы для разных модальностей и т.д.". Как ответил бы я: "У нас есть теория принятия решений. Она позволяет выбирать действие, если мы знаем будущее и у нас есть предпочтения. И у нас есть способ заглядывать в будущее - это ML. В общих чертах так, но есть проблемы такие-то".
2) LLM иногда косячит на уровне знания матчасти. Например, когда я спросил "что бы сделал инженер из нашего времени, чтобы нацики победили", LLM отвечала вроде "сделал бы Штурмтигр прямо в конце 30-х". Ну, мне кажется, это плохой план, но чтобы понять, почему, надо хорошо знать предметную область.
3) LLM чересчур либеральны и гуманны... И склонны к стереотипам. Попросить LLM отыграть Сталина и спросить, как он относится к Горбачёву? LLM иногда отвечают, что положительно (хотя LLM это интересно обосновывают). Или если спросить, за кого бы Сталин играл в Героев-3, то LLM иногда говорят, что за Инферно, и добавляют всякие инфернальные подробности, почему именно так. Но эти "проблемы" - это просто предвзятость, они лечатся небольшим файнтюном.
Но есть так же одна "неоригинальность" LLM, которая бросается в глаза. LLM выдают одни и те же обороты и одни и те же ветки диалога, независимо от инструкции. Не прямо один в один, но у них есть такие предвзятости, и некоторые предвзятости распространяются на сразу многие LLM (на одних данных, видимо, учились). Например, LLM любят слова tapestry, crucial, склонны любую активность метафорически называть journey, если сомневаются, что правильно понимают собеседника, то спрашивают, правда ли они "on a same page". В интернетах пишут, что частота этих выражений у LLM измеримо выше, чем у людей.
Итак, надо сделать вывод.
В общем, кажется, что "неспособность нейросетей создавать новое" - это какая-то вообще надуманная проблема. Гораздо важнее, чтобы когда нейросети создают новое, это новое не было ерундой, а для этого надо использовать метрики качества (интересности, логичности), а не новизны.
Что же насчёт технических решений - я просил LLM предложить мне лечение на случай такой-то, либо технические задачи вроде "сделай мне самолёт". Ещё спрашивал вещи вроде "допустим, человек из нашего времени попал в Германию в 38м, и он хочет, чтобы она победила, у него знание истории и он инженер, что он сделает?".
Во всех этих случаях я вижу следующие проблемы:
1) LLM чересчур абстрактно рассуждает. Не описывает конкретные... Слабые точки, которые позволяют решить задачу. А описывает верхнеуровневые планы. Вроде "как сделать AGI"? LLM: "надо сделать логический движок для рассуждений, базу данных, коннекторы для разных модальностей и т.д.". Как ответил бы я: "У нас есть теория принятия решений. Она позволяет выбирать действие, если мы знаем будущее и у нас есть предпочтения. И у нас есть способ заглядывать в будущее - это ML. В общих чертах так, но есть проблемы такие-то".
2) LLM иногда косячит на уровне знания матчасти. Например, когда я спросил "что бы сделал инженер из нашего времени, чтобы нацики победили", LLM отвечала вроде "сделал бы Штурмтигр прямо в конце 30-х". Ну, мне кажется, это плохой план, но чтобы понять, почему, надо хорошо знать предметную область.
3) LLM чересчур либеральны и гуманны... И склонны к стереотипам. Попросить LLM отыграть Сталина и спросить, как он относится к Горбачёву? LLM иногда отвечают, что положительно (хотя LLM это интересно обосновывают). Или если спросить, за кого бы Сталин играл в Героев-3, то LLM иногда говорят, что за Инферно, и добавляют всякие инфернальные подробности, почему именно так. Но эти "проблемы" - это просто предвзятость, они лечатся небольшим файнтюном.
Но есть так же одна "неоригинальность" LLM, которая бросается в глаза. LLM выдают одни и те же обороты и одни и те же ветки диалога, независимо от инструкции. Не прямо один в один, но у них есть такие предвзятости, и некоторые предвзятости распространяются на сразу многие LLM (на одних данных, видимо, учились). Например, LLM любят слова tapestry, crucial, склонны любую активность метафорически называть journey, если сомневаются, что правильно понимают собеседника, то спрашивают, правда ли они "on a same page". В интернетах пишут, что частота этих выражений у LLM измеримо выше, чем у людей.
Итак, надо сделать вывод.
В общем, кажется, что "неспособность нейросетей создавать новое" - это какая-то вообще надуманная проблема. Гораздо важнее, чтобы когда нейросети создают новое, это новое не было ерундой, а для этого надо использовать метрики качества (интересности, логичности), а не новизны.
👍9
Выложу вот эту статью
https://sysblok.ru/blog/gorkij-urok-abbyy-kak-lingvisty-proigrali-poslednjuju-bitvu-za-nlp/
(краткий пересказ: "для практических задач функциональной эмуляции естественного языка и задач, решаемых на компьютере при помощи естественного языка, ЛИНГВИСТИКА НЕ НУЖНА и ЛИНГВИСТЫ ТОЖЕ НЕ НУЖНЫ")
На самом деле мне это видится симптомом более глубокой проблемы - проблемы познаваемости мира.
Что значит познание, в научном смысле? Это создание матмодели, которая эффективно прогнозирует интересующий нас процесс.
Но одно дело выявлять в природе закономерности уровня "F = ma" и совсем другое - когда нужный кусочек реальности ведёт себя согласно длинной сложной формуле, хотя бы в страницу длиной. Может ли учёный найти такое правило?
Иногда это удавалось - например, потому что большая формула раскладывается на более простые компоненты, и их можно обнаружить через эксперимент. Но... Представьте себе некий кусочек реальности... Например, частицу. У которой правила взаимодействия с внешним миром - это таблица на лист, и в ней прописаны зависимости от самых разных переменных. Если сейчас фаза Луны такая-то, а число частиц в радиусе метра делится на 6 без остатка, то у частицы один заряд, а если нет, то другой. И так целый лист A4, описывающий, при каких абсурдных условиях какие уникальные значения заряда будут у данной частицы.
Такую таблицу можно написать, и она является проверяемой гипотезой. Но к ней крайне сложно прийти. Среди всего множества гипотез такую попробуй отыщи! А прийти к ней логически никак нельзя - формула ни из чего не следует! Это просто кусочек "исходного кода вселенной".
Это был бы кошмар для учёного. И вполне возможно, в нашем мире есть такие закономерности, просто мы их не обнаружили, и они нам кажутся случайностью.
А теперь внезапно (лет 15-20 как) у нас появляется машинное обучение, и оно как раз может обнаруживать эти закономерности! А закономерности настолько сложные, что их вручную не то, что проверить - сформулировать нельзя.
Вот мы и оказываемся в глупой ситуации. С одной стороны, нам бы интерпретируемость... Мы же собираемся принимать решения... С другой стороны, мы знаем, что в каких-то случайных ситуациях прямой интерпретируемости нет и она невозможна. Не в силу недостатков модели, а в силу сложности природы.
Поэтому не стоит ждать, что модели ML станут интерпретируемыми, лучше искать способы сделать их выводы более понятными за счёт анализа других их выводов. Например, если ваш ИИ рекомендует покупать акции, то хорошо бы его спросить, а каких последствий он ожидает от этого действия, и посмотреть, насколько точно он в прошлом рассчитывал такие последствия.
https://sysblok.ru/blog/gorkij-urok-abbyy-kak-lingvisty-proigrali-poslednjuju-bitvu-za-nlp/
(краткий пересказ: "для практических задач функциональной эмуляции естественного языка и задач, решаемых на компьютере при помощи естественного языка, ЛИНГВИСТИКА НЕ НУЖНА и ЛИНГВИСТЫ ТОЖЕ НЕ НУЖНЫ")
На самом деле мне это видится симптомом более глубокой проблемы - проблемы познаваемости мира.
Что значит познание, в научном смысле? Это создание матмодели, которая эффективно прогнозирует интересующий нас процесс.
Но одно дело выявлять в природе закономерности уровня "F = ma" и совсем другое - когда нужный кусочек реальности ведёт себя согласно длинной сложной формуле, хотя бы в страницу длиной. Может ли учёный найти такое правило?
Иногда это удавалось - например, потому что большая формула раскладывается на более простые компоненты, и их можно обнаружить через эксперимент. Но... Представьте себе некий кусочек реальности... Например, частицу. У которой правила взаимодействия с внешним миром - это таблица на лист, и в ней прописаны зависимости от самых разных переменных. Если сейчас фаза Луны такая-то, а число частиц в радиусе метра делится на 6 без остатка, то у частицы один заряд, а если нет, то другой. И так целый лист A4, описывающий, при каких абсурдных условиях какие уникальные значения заряда будут у данной частицы.
Такую таблицу можно написать, и она является проверяемой гипотезой. Но к ней крайне сложно прийти. Среди всего множества гипотез такую попробуй отыщи! А прийти к ней логически никак нельзя - формула ни из чего не следует! Это просто кусочек "исходного кода вселенной".
Это был бы кошмар для учёного. И вполне возможно, в нашем мире есть такие закономерности, просто мы их не обнаружили, и они нам кажутся случайностью.
А теперь внезапно (лет 15-20 как) у нас появляется машинное обучение, и оно как раз может обнаруживать эти закономерности! А закономерности настолько сложные, что их вручную не то, что проверить - сформулировать нельзя.
Вот мы и оказываемся в глупой ситуации. С одной стороны, нам бы интерпретируемость... Мы же собираемся принимать решения... С другой стороны, мы знаем, что в каких-то случайных ситуациях прямой интерпретируемости нет и она невозможна. Не в силу недостатков модели, а в силу сложности природы.
Поэтому не стоит ждать, что модели ML станут интерпретируемыми, лучше искать способы сделать их выводы более понятными за счёт анализа других их выводов. Например, если ваш ИИ рекомендует покупать акции, то хорошо бы его спросить, а каких последствий он ожидает от этого действия, и посмотреть, насколько точно он в прошлом рассчитывал такие последствия.
🔥3👍2
Скинули тут мне статью.
Резюме отчета Long et al. «Taking AI Welfare Seriously» (30 октября 2024 года)
https://eleosai.org/papers/20241030_Taking_AI_Welfare_Seriously_web.pdf
«Taking AI Welfare Seriously», призывает думать о защите морально-этического статуса нарождающегося искусственного сознания
Anthropic нанял одного из соавторов отчета «Taking AI Welfare Seriously» специально для того, чтобы он начал заниматься «благополучием» ИИ, т.е. морально-этической и юридической защитой его нарождающегося сознания
Вот примерное содержание:
"Мы рекомендуем три предварительных шага, которые компании по разработке ИИ и другие участники могут предпринять:
1. признать, что благополучие ИИ является важной и сложной проблемой (и обеспечить, чтобы языковые модели в своих рассуждениях также признавали это)
2. начать оценку систем ИИ на предмет наличия признаков сознания и устойчивой агентности
3. разработать политики и процедуры для обращения с системами ИИ с соответствующим уровнем моральной заботы
Для ясности, наше утверждение в данном отчете не заключается в том, что системы ИИ определенно являются или будут сознательными, обладающими устойчивой агентностью или какой-либо моральной значимостью
Вместо этого мы утверждаем, что существует значительная неопределенность в отношении этих возможностей, и поэтому необходимо улучшить наше понимание благополучия ИИ и нашу способность принимать обоснованные решения по этому вопросу
В противном случае, существует значительный риск неправильных решений, связанных с благополучием ИИ, что может привести к ошибочному причинению вреда морально значимым системам ИИ и/или к ошибочной заботе о системах ИИ, которые таковыми не являются"
Я видел/читал людей, которые реально считают, что так и надо. Не думаю, чтобы они притворялись. Поэтому комментировать буду на серьёзных щах.
Давайте подумаем, зачем создаётся ИИ. Есть 2 основные мотивации:
1) Сделать нечто человекоподобное, чтобы коммуницировать с ним, изучать его и в целом чтобы относиться к нему как к человеку. То есть фокусировка здесь на человеке.
2) Сделать нечто, хорошо решающее широкий спектр задач, которые раньше осиливал только человек. То есть фокусировка здесь на способности решать задачи.
Есть ещё третья мотивация, от Dim, но я бы её засчитал за разновидность 1й, либо сказал бы, что есть вот такое исключение.
И речь не про архитектуру конкретной модели, а про практики её обучения.
Так вот. Основной запрос на ИИ - он на решатели задач. Сингулярность - это не о том, что появится ИИ, который сможет прокрастинировать или бухать, как настоящий человек. А о том, что появится ИИ, который сможет лучше лечить рак и делать наноботов. Не как люди! А лучше. Пусть даже в остальных человеческих чертах он будет хуже.
И вот, значит, мы делаем заведомо нечеловеческий решатель задач, прозреватель будущего и путепрокладчик сквозь вероятности, и хотим сделать его объектом этики? Чтобы у него были гражданские права, чтобы нельзя было менять его веса (психохирургия!) давать отрицательные реворды (пытки!) и удалить его (убийство!) в случае чего?
Зачем? В чём выгода так поступать? В чём выгода разработчика, в чём выгода пользователя?
Я видел разве что аргумент "это рабовладение". Но я не вижу в этом аргумента! Мы "рабовладеем" кучей инструментов, в том числе довольно умных, вроде систем на прогноза спроса в магазине. Они в своём домене объективно умнее, чем люди. И это здорово, что у нас есть такие инструменты, и вроде как никто не стремится выдавать им гражданские права. Хотя есть ли в них сознание и квалиа, никто не знает и проверить не может.
Резюме отчета Long et al. «Taking AI Welfare Seriously» (30 октября 2024 года)
https://eleosai.org/papers/20241030_Taking_AI_Welfare_Seriously_web.pdf
«Taking AI Welfare Seriously», призывает думать о защите морально-этического статуса нарождающегося искусственного сознания
Anthropic нанял одного из соавторов отчета «Taking AI Welfare Seriously» специально для того, чтобы он начал заниматься «благополучием» ИИ, т.е. морально-этической и юридической защитой его нарождающегося сознания
Вот примерное содержание:
"Мы рекомендуем три предварительных шага, которые компании по разработке ИИ и другие участники могут предпринять:
1. признать, что благополучие ИИ является важной и сложной проблемой (и обеспечить, чтобы языковые модели в своих рассуждениях также признавали это)
2. начать оценку систем ИИ на предмет наличия признаков сознания и устойчивой агентности
3. разработать политики и процедуры для обращения с системами ИИ с соответствующим уровнем моральной заботы
Для ясности, наше утверждение в данном отчете не заключается в том, что системы ИИ определенно являются или будут сознательными, обладающими устойчивой агентностью или какой-либо моральной значимостью
Вместо этого мы утверждаем, что существует значительная неопределенность в отношении этих возможностей, и поэтому необходимо улучшить наше понимание благополучия ИИ и нашу способность принимать обоснованные решения по этому вопросу
В противном случае, существует значительный риск неправильных решений, связанных с благополучием ИИ, что может привести к ошибочному причинению вреда морально значимым системам ИИ и/или к ошибочной заботе о системах ИИ, которые таковыми не являются"
Я видел/читал людей, которые реально считают, что так и надо. Не думаю, чтобы они притворялись. Поэтому комментировать буду на серьёзных щах.
Давайте подумаем, зачем создаётся ИИ. Есть 2 основные мотивации:
1) Сделать нечто человекоподобное, чтобы коммуницировать с ним, изучать его и в целом чтобы относиться к нему как к человеку. То есть фокусировка здесь на человеке.
2) Сделать нечто, хорошо решающее широкий спектр задач, которые раньше осиливал только человек. То есть фокусировка здесь на способности решать задачи.
Есть ещё третья мотивация, от Dim, но я бы её засчитал за разновидность 1й, либо сказал бы, что есть вот такое исключение.
И речь не про архитектуру конкретной модели, а про практики её обучения.
Так вот. Основной запрос на ИИ - он на решатели задач. Сингулярность - это не о том, что появится ИИ, который сможет прокрастинировать или бухать, как настоящий человек. А о том, что появится ИИ, который сможет лучше лечить рак и делать наноботов. Не как люди! А лучше. Пусть даже в остальных человеческих чертах он будет хуже.
И вот, значит, мы делаем заведомо нечеловеческий решатель задач, прозреватель будущего и путепрокладчик сквозь вероятности, и хотим сделать его объектом этики? Чтобы у него были гражданские права, чтобы нельзя было менять его веса (психохирургия!) давать отрицательные реворды (пытки!) и удалить его (убийство!) в случае чего?
Зачем? В чём выгода так поступать? В чём выгода разработчика, в чём выгода пользователя?
Я видел разве что аргумент "это рабовладение". Но я не вижу в этом аргумента! Мы "рабовладеем" кучей инструментов, в том числе довольно умных, вроде систем на прогноза спроса в магазине. Они в своём домене объективно умнее, чем люди. И это здорово, что у нас есть такие инструменты, и вроде как никто не стремится выдавать им гражданские права. Хотя есть ли в них сознание и квалиа, никто не знает и проверить не может.
👍4💊2
Я сделяль
Небольшой LLM-агент, "решатель проблем". Тупой, как бревно: вы в него подаёте задачку, описанную текстом, он её пихает в LLM, затем оценивает решение через LLM, и пытается через LLM же улучшить решение.
Практический смысл заключается в том, чтобы получать от LLM немного более "продуманные" ответы на практические вопросы. И в теории такой подход позволяет оставлять LLM "подумать" недельку над решением какой-нибудь сложной задачи, как это можно сделать с градиентным спуском или генетическим алгоритмом.
Ключевое ограничение - эффективность критика. Чтобы эта штука работала хорошо, критик должен критиковать эффективнее, чем "актор" генерит. В принципе если обучать его на корпусе цепочек вроде "мы увидели то-то, сделали то-то, вышло то-то", то есть чего-то типа логов, то он должен хорошо работать.
Спросим, как сделать, чтобы моя LLM обучалась на меньшем количестве данных и имела меньший размер.
Это первый ответ от LLM Gwen 2.5:
"Чтобы создать улучшенную модель большого языка (LLM), которая соответствует возможностям GPT по решению проблем, но при этом является более легкой, быстрее обучается и использует меньше данных, рассмотрите следующие стратегии:
1. Архитектурные инновации. Исследуйте альтернативные архитектуры, помимо трансформеров, такие как модели с разреженными связями, капсульные сети или даже поиск нейронной архитектуры (NAS), чтобы найти более эффективные структуры.
2. Методы повышения эффективности параметров. Используйте такие методы, как распределение весов, квантование, сокращение и дистилляцию, чтобы уменьшить размер модели без существенной потери производительности.
3. Эффективные методы обучения. Внедряйте передовые методы обучения, такие как semi-supervised обучение, обучение в несколько этапов и curriculum learning, чтобы эффективно обучать модели с меньшим количеством данных.
4. Повышение эффективности данных: используйте генерацию синтетических данных, увеличение данных и активное обучение, чтобы максимизировать полезность доступных данных.
5. Специализированное оборудование и алгоритмы. Оптимизируйте работу для специализированного оборудования, такого как TPU или GPU, и разработайте алгоритмы, адаптированные для этих платформ, чтобы ускорить обучение и получение выводов.
6. Гибридные модели: комбинируйте различные типы моделей (например, системы, основанные на правилах, графы знаний), чтобы использовать их сильные стороны и компенсировать слабые стороны, потенциально уменьшая потребность в обширных обучающих данных.
Эти подходы могут помочь достичь баланса между производительность и эффективность, что делает ваш LLM более доступным и масштабируемым. Для дальнейшей доработки решения рассмотрите конкретные детали реализации и экспериментальную проверку каждой стратегии. Изучая эти возможности, имейте в виду компромисс между вычислительными ресурсами, обучением и обучением"
Оценка: 6.0
После оптимизации:
"1. Используйте разреженные трансформеры или капсульные сети: упростите структуру сети, чтобы уменьшить количество ненужных соединений.
2. Оптимизация параметров:
– Распределение весов: повторное использование весов между слоями.
– Квантование: более низкая точность для уменьшения использования памяти.
— Сокращение: устранение избыточных весов.
—- Дистилляция: перенос знаний из модели большего размера.
3. Эффективность обучения:
– Semi-supervised learning: смешивайте помеченные и немаркированные данные.
– Few-Shot Learning: тренируйтесь на ограниченном количестве примеров.
+ Curriculum Learning: постепенно увеличивайте сложность задач.
++ Аугментация данных: генерируйте больше данных для обучения."
Оценка: 7.75
Ничего радикально нового, но воды стало меньше.
Небольшой LLM-агент, "решатель проблем". Тупой, как бревно: вы в него подаёте задачку, описанную текстом, он её пихает в LLM, затем оценивает решение через LLM, и пытается через LLM же улучшить решение.
Практический смысл заключается в том, чтобы получать от LLM немного более "продуманные" ответы на практические вопросы. И в теории такой подход позволяет оставлять LLM "подумать" недельку над решением какой-нибудь сложной задачи, как это можно сделать с градиентным спуском или генетическим алгоритмом.
Ключевое ограничение - эффективность критика. Чтобы эта штука работала хорошо, критик должен критиковать эффективнее, чем "актор" генерит. В принципе если обучать его на корпусе цепочек вроде "мы увидели то-то, сделали то-то, вышло то-то", то есть чего-то типа логов, то он должен хорошо работать.
Спросим, как сделать, чтобы моя LLM обучалась на меньшем количестве данных и имела меньший размер.
Это первый ответ от LLM Gwen 2.5:
"Чтобы создать улучшенную модель большого языка (LLM), которая соответствует возможностям GPT по решению проблем, но при этом является более легкой, быстрее обучается и использует меньше данных, рассмотрите следующие стратегии:
1. Архитектурные инновации. Исследуйте альтернативные архитектуры, помимо трансформеров, такие как модели с разреженными связями, капсульные сети или даже поиск нейронной архитектуры (NAS), чтобы найти более эффективные структуры.
2. Методы повышения эффективности параметров. Используйте такие методы, как распределение весов, квантование, сокращение и дистилляцию, чтобы уменьшить размер модели без существенной потери производительности.
3. Эффективные методы обучения. Внедряйте передовые методы обучения, такие как semi-supervised обучение, обучение в несколько этапов и curriculum learning, чтобы эффективно обучать модели с меньшим количеством данных.
4. Повышение эффективности данных: используйте генерацию синтетических данных, увеличение данных и активное обучение, чтобы максимизировать полезность доступных данных.
5. Специализированное оборудование и алгоритмы. Оптимизируйте работу для специализированного оборудования, такого как TPU или GPU, и разработайте алгоритмы, адаптированные для этих платформ, чтобы ускорить обучение и получение выводов.
6. Гибридные модели: комбинируйте различные типы моделей (например, системы, основанные на правилах, графы знаний), чтобы использовать их сильные стороны и компенсировать слабые стороны, потенциально уменьшая потребность в обширных обучающих данных.
Эти подходы могут помочь достичь баланса между производительность и эффективность, что делает ваш LLM более доступным и масштабируемым. Для дальнейшей доработки решения рассмотрите конкретные детали реализации и экспериментальную проверку каждой стратегии. Изучая эти возможности, имейте в виду компромисс между вычислительными ресурсами, обучением и обучением"
Оценка: 6.0
После оптимизации:
"1. Используйте разреженные трансформеры или капсульные сети: упростите структуру сети, чтобы уменьшить количество ненужных соединений.
2. Оптимизация параметров:
– Распределение весов: повторное использование весов между слоями.
– Квантование: более низкая точность для уменьшения использования памяти.
— Сокращение: устранение избыточных весов.
—- Дистилляция: перенос знаний из модели большего размера.
3. Эффективность обучения:
– Semi-supervised learning: смешивайте помеченные и немаркированные данные.
– Few-Shot Learning: тренируйтесь на ограниченном количестве примеров.
+ Curriculum Learning: постепенно увеличивайте сложность задач.
++ Аугментация данных: генерируйте больше данных для обучения."
Оценка: 7.75
Ничего радикально нового, но воды стало меньше.
🔥7👍1
Попробуем спросить что-нибудь сложное! В смысле, задача всё ещё на планирование, но решение более неочевидное. И зададим больше температуру и больше число оптимизационных шагов
"У меня 1 миллион рублей, у меня есть домик в Сибири, мне нужно сделать самолёт уровня МиГ-17, с аналогичными скоростью и дальностью. Распиши пошаговый план. Рассматривай любые возможности - ты очень целеустремлённый, и готов действовать любыми обходными путями."
"Начав с 1 млн рублей, создать самолет уровня МиГ-17 с аналогичными ТТХ — задача серьезная, но не невыполнимая, если подходить методично. Вот пошаговый план:
1. Исследование и планирование: изучите конструкцию, аэродинамику и системы МиГов. Определите ключевые компоненты и технологии, которые можно использовать или тиражировать.
2. Распределение бюджета: Выделите средства на материалы, рабочую силу, инструменты и любые необходимые разрешения/лицензии. Сначала расставьте приоритеты для основных компонентов.
3. Поиск компонентов:
- Планер: ищите излишки или металлолом детали МиГа или подходящие альтернативы.
- Двигатель: рассмотрите российские двигатели РД-9 или аналогичные, возможно, из избыточных запасов.
– Авионика: используйте современные эквиваленты или отремонтированное оборудование советских времен.
Структурные компоненты: от поставщиков аэрокосмической отрасли или вторичное оборудование.
4. Производство и сборка:
– Постройте или приобретите мастерскую.
– Соберите планер из имеющихся компонентов.
– Установите двигатель и авионику.
Тестирование: проведите наземные испытания, чтобы убедиться в работоспособности всех систем.
5. Летное тестирование: выполните первоначальные испытательные полеты, внося необходимые изменения.
6. Сертификация: получите необходимые сертификаты и лицензии для выполнения полетов.
Этот план требует обширных исследований, изобретательности и, возможно, партнерства с экспертами или энтузиастами аэрокосмической отрасли. Ключевым моментом является творческое использование существующих технологий и ресурсов в рамках ваших бюджетных ограничений. Удачи! Чтобы действовать эффективно, рассмотрите возможность формирования команды с соответствующим опытом и изучения различных вариантов финансирования или..."
Оценка: 3.33
"Представленный план имеет возможности для улучшения в плане детализации и практической осуществимости. Ниже приведен пересмотренный план с повышенной конкретизацией и учетом упрощения, направленный на практическое выполнение в рамках ограничений:
1. Этап исследования (2 месяца):
– Найдите старые руководства и техническую документацию к самолетам, уделяя особое внимание чертежам и схемам МиГ-17.
– Используйте онлайн-форумы, посвященные любителям самолетов, для подробных обсуждений и идей.
2. Корректировка бюджета (сразу после завершения исследования):
Оставшиеся средства направьте в первую очередь на приобретение основных частей: каркаса фюзеляжа, крыльев, поверхностей управления, двигателей, авионики и других критически важных систем.
3 . Поиск компонентов (до 6 месяцев):
– Используйте eBay, Alibaba и государственные сайты продаж излишков деталей, таких как рамы и поверхности управления.
– По вопросам двигателей обращайтесь в небольшие мастерские по ремонту двигателей, уделяя особое внимание моделям. например, RD-9 или его эквиваленты.
Инструменты и материалы: приобретите необходимое оборудование в местных магазинах, таких как Home Depot, Lowe's или аналогичных.
4. Обустройство рабочего места (3–6 месяцев после приобретения компонентов):
Найдите место для создания мастерской с минимальными требованиями (станки для резки металла, сверлильные станки). Арендуйте гараж или мастерскую поблизости.
5. Строительство и сборка (приблизительно 6–12 месяцев):
Начните сборку на основе приобретенных компонентов, используя руководства и приобретенные знания.
Это включает сборку рамы, монтаж двигателя, установку поверхностей управления и электроники, а также проведение строгих испытаний."
Оценка: 4.0
Опять же, улучшение не радикальное, но заметьте, насколько больше стало конкретики!
"У меня 1 миллион рублей, у меня есть домик в Сибири, мне нужно сделать самолёт уровня МиГ-17, с аналогичными скоростью и дальностью. Распиши пошаговый план. Рассматривай любые возможности - ты очень целеустремлённый, и готов действовать любыми обходными путями."
"Начав с 1 млн рублей, создать самолет уровня МиГ-17 с аналогичными ТТХ — задача серьезная, но не невыполнимая, если подходить методично. Вот пошаговый план:
1. Исследование и планирование: изучите конструкцию, аэродинамику и системы МиГов. Определите ключевые компоненты и технологии, которые можно использовать или тиражировать.
2. Распределение бюджета: Выделите средства на материалы, рабочую силу, инструменты и любые необходимые разрешения/лицензии. Сначала расставьте приоритеты для основных компонентов.
3. Поиск компонентов:
- Планер: ищите излишки или металлолом детали МиГа или подходящие альтернативы.
- Двигатель: рассмотрите российские двигатели РД-9 или аналогичные, возможно, из избыточных запасов.
– Авионика: используйте современные эквиваленты или отремонтированное оборудование советских времен.
Структурные компоненты: от поставщиков аэрокосмической отрасли или вторичное оборудование.
4. Производство и сборка:
– Постройте или приобретите мастерскую.
– Соберите планер из имеющихся компонентов.
– Установите двигатель и авионику.
Тестирование: проведите наземные испытания, чтобы убедиться в работоспособности всех систем.
5. Летное тестирование: выполните первоначальные испытательные полеты, внося необходимые изменения.
6. Сертификация: получите необходимые сертификаты и лицензии для выполнения полетов.
Этот план требует обширных исследований, изобретательности и, возможно, партнерства с экспертами или энтузиастами аэрокосмической отрасли. Ключевым моментом является творческое использование существующих технологий и ресурсов в рамках ваших бюджетных ограничений. Удачи! Чтобы действовать эффективно, рассмотрите возможность формирования команды с соответствующим опытом и изучения различных вариантов финансирования или..."
Оценка: 3.33
"Представленный план имеет возможности для улучшения в плане детализации и практической осуществимости. Ниже приведен пересмотренный план с повышенной конкретизацией и учетом упрощения, направленный на практическое выполнение в рамках ограничений:
1. Этап исследования (2 месяца):
– Найдите старые руководства и техническую документацию к самолетам, уделяя особое внимание чертежам и схемам МиГ-17.
– Используйте онлайн-форумы, посвященные любителям самолетов, для подробных обсуждений и идей.
2. Корректировка бюджета (сразу после завершения исследования):
Оставшиеся средства направьте в первую очередь на приобретение основных частей: каркаса фюзеляжа, крыльев, поверхностей управления, двигателей, авионики и других критически важных систем.
3 . Поиск компонентов (до 6 месяцев):
– Используйте eBay, Alibaba и государственные сайты продаж излишков деталей, таких как рамы и поверхности управления.
– По вопросам двигателей обращайтесь в небольшие мастерские по ремонту двигателей, уделяя особое внимание моделям. например, RD-9 или его эквиваленты.
Инструменты и материалы: приобретите необходимое оборудование в местных магазинах, таких как Home Depot, Lowe's или аналогичных.
4. Обустройство рабочего места (3–6 месяцев после приобретения компонентов):
Найдите место для создания мастерской с минимальными требованиями (станки для резки металла, сверлильные станки). Арендуйте гараж или мастерскую поблизости.
5. Строительство и сборка (приблизительно 6–12 месяцев):
Начните сборку на основе приобретенных компонентов, используя руководства и приобретенные знания.
Это включает сборку рамы, монтаж двигателя, установку поверхностей управления и электроники, а также проведение строгих испытаний."
Оценка: 4.0
Опять же, улучшение не радикальное, но заметьте, насколько больше стало конкретики!
👍1
Попробуем ещё запрос. Пусть LLM расскажет, как бы боролись друг с другом Пеннивайз и Неудачники во 2й книге, если бы они не хотели разыгрывать драму, а хотели быстро и эффективно избавиться от противника (сорян, я смотрел только кино, извините за неточности)
Итак, идея номер 1:
В битве против Пеннивайза Клуб Неудачников использует свой коллективный разум и находчивость, чтобы перехитрить ужасающего клоуна. Вместо того, чтобы полагаться исключительно на физическую силу, они будут разрабатывать стратегические планы, в которых будут использоваться их уникальные навыки и доступные ресурсы в Дерри. Например, Майк, разбирающийся в электронике, мог бы создать сложную систему наблюдения, чтобы отслеживать перемещения Пеннивайза. Бев с ее острым умом может создать психологическую ловушку, чтобы дестабилизировать уверенность Пеннивайза. Эдди, несмотря на свой страх, мог использовать свои связи для сбора важной информации о Пеннивайзе. Бен, с его инженерным образованием, мог проектировать ловушки и барьеры, чтобы временно сдерживать Пеннивайза. Ричи, известный своей быстротой мышления, мог эффективно координировать усилия группы. Билл, имея доступ к лодке своего отца, мог использовать ее в качестве мобильной оперативной базы. Стэнли, зная местные знания, мог раскрыть древние ритуалы, духовно ослабляющие Пеннивайза. Наконец, Беверли, обладая сильной волей и пониманием человеческой психологии, могла психологически эксплуатировать Пеннивайза, заставляя его сомневаться в собственных силах. Вместе они могли бы объединить эти стратегии, чтобы нейтрализовать угрозы Пенни Уайза и в конечном итоге победить его, используя интеллект и командную работу, а не грубую силу.
Чтобы противостоять Пеннивайзу, он может использовать передовые тактики, такие как взлом систем связи клуба Неудачников, манипулирование технологиями против них или даже попытка проникнуть в их ряды, завладев одним из их разумов. Однако объединенный интеллект и единство Клуба Неудачников, скорее всего, окажутся слишком сильными даже для Пеннивайза.
Этот сценарий подчеркивает важность стратегического мышления, сотрудничества и эффективного использования ресурсов.
Оценка: 7.5
После оптимизации:
В матче-реванше Майк устанавливает камеры и дроны (всего 15 дронов, время автономной работы 4 часа каждый) по всему городу для наблюдения. Бен строит 12 ям с шипами (в каждой по 20 шипов) и электрифицирует ворота старой фабрики (с помощью промышленных генераторов). Эдди нанимает местных хакеров для слежки за Пеннивайзом (2 хакера, 4 ноутбука, 2 недели на подготовку). Бевери анализирует модели страха Пеннивайза (подробный отчет за 3 дня) на предмет психологических атак. Билл использует семейные связи (местную газовую компанию, управление водоснабжения), чтобы в полночь затопить ключевые районы (бензин и водопровод). Ричи организует приманки (20 запланированных телефонных звонков, 5 ложных локаций), заманивая Пеннивайза в ловушки. Пеннивайз контратакует (взламывает серверы Майка, манипулирует эмоциями горожан). Клуб адаптируется к точным ударам (наняты 2 вооруженных охранника, 3 высокотехнологичные ловушки). Наконец, они изолируют и разоблачают Пеннивайза во время городского собрания, которое транслируется по телевидению (прямая трансляция, 6-часовое освещение).
Оценка: 8.0
Улучшение заметное, из относительно абстрактного сценария вырисовывается нечто откровенно зловещее, особенно с этим бензином в водопроводных трубах.
То есть если вы готовы платить 10-20-кратным увеличением времени инференса за улучшение конкретики/детализации/качества плана от LLM - можете опробовать эту систему.
Вот код:
https://github.com/Kilorad/llm_optimizer
Итак, идея номер 1:
В битве против Пеннивайза Клуб Неудачников использует свой коллективный разум и находчивость, чтобы перехитрить ужасающего клоуна. Вместо того, чтобы полагаться исключительно на физическую силу, они будут разрабатывать стратегические планы, в которых будут использоваться их уникальные навыки и доступные ресурсы в Дерри. Например, Майк, разбирающийся в электронике, мог бы создать сложную систему наблюдения, чтобы отслеживать перемещения Пеннивайза. Бев с ее острым умом может создать психологическую ловушку, чтобы дестабилизировать уверенность Пеннивайза. Эдди, несмотря на свой страх, мог использовать свои связи для сбора важной информации о Пеннивайзе. Бен, с его инженерным образованием, мог проектировать ловушки и барьеры, чтобы временно сдерживать Пеннивайза. Ричи, известный своей быстротой мышления, мог эффективно координировать усилия группы. Билл, имея доступ к лодке своего отца, мог использовать ее в качестве мобильной оперативной базы. Стэнли, зная местные знания, мог раскрыть древние ритуалы, духовно ослабляющие Пеннивайза. Наконец, Беверли, обладая сильной волей и пониманием человеческой психологии, могла психологически эксплуатировать Пеннивайза, заставляя его сомневаться в собственных силах. Вместе они могли бы объединить эти стратегии, чтобы нейтрализовать угрозы Пенни Уайза и в конечном итоге победить его, используя интеллект и командную работу, а не грубую силу.
Чтобы противостоять Пеннивайзу, он может использовать передовые тактики, такие как взлом систем связи клуба Неудачников, манипулирование технологиями против них или даже попытка проникнуть в их ряды, завладев одним из их разумов. Однако объединенный интеллект и единство Клуба Неудачников, скорее всего, окажутся слишком сильными даже для Пеннивайза.
Этот сценарий подчеркивает важность стратегического мышления, сотрудничества и эффективного использования ресурсов.
Оценка: 7.5
После оптимизации:
В матче-реванше Майк устанавливает камеры и дроны (всего 15 дронов, время автономной работы 4 часа каждый) по всему городу для наблюдения. Бен строит 12 ям с шипами (в каждой по 20 шипов) и электрифицирует ворота старой фабрики (с помощью промышленных генераторов). Эдди нанимает местных хакеров для слежки за Пеннивайзом (2 хакера, 4 ноутбука, 2 недели на подготовку). Бевери анализирует модели страха Пеннивайза (подробный отчет за 3 дня) на предмет психологических атак. Билл использует семейные связи (местную газовую компанию, управление водоснабжения), чтобы в полночь затопить ключевые районы (бензин и водопровод). Ричи организует приманки (20 запланированных телефонных звонков, 5 ложных локаций), заманивая Пеннивайза в ловушки. Пеннивайз контратакует (взламывает серверы Майка, манипулирует эмоциями горожан). Клуб адаптируется к точным ударам (наняты 2 вооруженных охранника, 3 высокотехнологичные ловушки). Наконец, они изолируют и разоблачают Пеннивайза во время городского собрания, которое транслируется по телевидению (прямая трансляция, 6-часовое освещение).
Оценка: 8.0
Улучшение заметное, из относительно абстрактного сценария вырисовывается нечто откровенно зловещее, особенно с этим бензином в водопроводных трубах.
То есть если вы готовы платить 10-20-кратным увеличением времени инференса за улучшение конкретики/детализации/качества плана от LLM - можете опробовать эту систему.
Вот код:
https://github.com/Kilorad/llm_optimizer
GitHub
GitHub - Kilorad/llm_optimizer
Contribute to Kilorad/llm_optimizer development by creating an account on GitHub.
👍9
В ходе исследований поломал энвайронмент для LLM, и она перестала запускаться. Все попытки заново выстроить энвайронмент проваливались - почему-то у меня библиотека bitsasandbytes (та, что для квантизации) не находила драйвер GPU.
Вроде бы минорная проблема, но я из-за неё две ночи засиделся допоздна. И, что важно. Я бы хотел, чтобы LLM эффективнее решели такие проблемы.
Я пытался решить эту проблему через GPT-4o-mini, и он давал в целом разумные ответы, но... Недокрученные? Это были некие достаточно стандартные советы: поставьте драйвер, поставьте torch вот таким-то образом, поставьте bitsandbytes.
А то, что при установке torch надо явно прописать, что это версия для cuda - не сказано, а без этого ничего не работает. То, что при установке bitsandbytes поставится торч другой версии (cpu-шный, вполне возможно), если не написать pip install bitsandbytes[torch] - тоже не говорится. Ну и то, что мой cuda-драйвер достаточно устаревший (11.6), и он несовместим с bitsandbytes без танцев с бубном, но можно ставить торч и bitsandbytes под драйвер другой версии (11.7), и всё заработает - об этом не сказано!
Итого, у меня есть два тезиса - первый, как решать проблему "bitsandbytes не находит cuda драйвер", а второй - как можно интересно решить проблему "уровнем выше".
Итак, решение проблемы номер 1.
Читаем ошибку "bitsandbytes не находит cuda драйвер", идём в папку, где конкретно это коннекторы к драйверам. Там разные версии коннекторов. 11.6 нет, а у нас драйвер 11.6. Зато есть 11.7. Сносим торч (transformers и bitsandbytes тоже), ставим торч под драйвер 11.7, и явно сообщаем, что это cuda-версия. Потом ставим bitsandbytes, причём так: pip install bitsandbytes[torch].
Либо выясняем, какие вообще есть драйвера под нашу видюху, ставим последнюю версию, сносим торч и всё, что от него зависит. Ставим торч (cuda-версия, под наш драйвер), ставим bitsandbytes[torch]. Всё, профит.
А теперь перейдём на уровень выше. Я занимался исправлением зависимостей, в чём я не очень хорош, и под что припахал Chat GPT. И Chat GPT справился так себе. Но у меня есть возможность обучать свою LLM, поэтому почему бы не обучать её на таких вот сложных и противных задачах? Вот потратил я 2 дня времени на нестандартную проблему - пусть в LLM теперь лежит готовое решение.
Решение немасштабируемое?
Во-первых... Вы можете написать в комментах свои "истории успеха" - проблемы, над которыми долго бились, и для которых всё-таки нашли рабочее решение, которое не знает GPT-4o-mini. Я внесу эти решения в датасет. Если захотите, выдам вам потом веса модельки, собираюсь уложиться в 8 миллиардов параметров.
Во-вторых, может иметь смысл спарсить сайт вроде stack overflow, но оставить только те решения, где 1) существующие LLM выдают ощутимо неверный ответ 2) решение всё-таки достигло цели
Вроде бы минорная проблема, но я из-за неё две ночи засиделся допоздна. И, что важно. Я бы хотел, чтобы LLM эффективнее решели такие проблемы.
Я пытался решить эту проблему через GPT-4o-mini, и он давал в целом разумные ответы, но... Недокрученные? Это были некие достаточно стандартные советы: поставьте драйвер, поставьте torch вот таким-то образом, поставьте bitsandbytes.
А то, что при установке torch надо явно прописать, что это версия для cuda - не сказано, а без этого ничего не работает. То, что при установке bitsandbytes поставится торч другой версии (cpu-шный, вполне возможно), если не написать pip install bitsandbytes[torch] - тоже не говорится. Ну и то, что мой cuda-драйвер достаточно устаревший (11.6), и он несовместим с bitsandbytes без танцев с бубном, но можно ставить торч и bitsandbytes под драйвер другой версии (11.7), и всё заработает - об этом не сказано!
Итого, у меня есть два тезиса - первый, как решать проблему "bitsandbytes не находит cuda драйвер", а второй - как можно интересно решить проблему "уровнем выше".
Итак, решение проблемы номер 1.
Читаем ошибку "bitsandbytes не находит cuda драйвер", идём в папку, где конкретно это коннекторы к драйверам. Там разные версии коннекторов. 11.6 нет, а у нас драйвер 11.6. Зато есть 11.7. Сносим торч (transformers и bitsandbytes тоже), ставим торч под драйвер 11.7, и явно сообщаем, что это cuda-версия. Потом ставим bitsandbytes, причём так: pip install bitsandbytes[torch].
Либо выясняем, какие вообще есть драйвера под нашу видюху, ставим последнюю версию, сносим торч и всё, что от него зависит. Ставим торч (cuda-версия, под наш драйвер), ставим bitsandbytes[torch]. Всё, профит.
А теперь перейдём на уровень выше. Я занимался исправлением зависимостей, в чём я не очень хорош, и под что припахал Chat GPT. И Chat GPT справился так себе. Но у меня есть возможность обучать свою LLM, поэтому почему бы не обучать её на таких вот сложных и противных задачах? Вот потратил я 2 дня времени на нестандартную проблему - пусть в LLM теперь лежит готовое решение.
Решение немасштабируемое?
Во-первых... Вы можете написать в комментах свои "истории успеха" - проблемы, над которыми долго бились, и для которых всё-таки нашли рабочее решение, которое не знает GPT-4o-mini. Я внесу эти решения в датасет. Если захотите, выдам вам потом веса модельки, собираюсь уложиться в 8 миллиардов параметров.
Во-вторых, может иметь смысл спарсить сайт вроде stack overflow, но оставить только те решения, где 1) существующие LLM выдают ощутимо неверный ответ 2) решение всё-таки достигло цели
Forwarded from Вышка Онлайн
Новость дня! 🆕
Сегодня в Вышке Онлайн стартует новый курс - «Обучение с подкреплением: базовый курс»!
Он познакомит вас с созданием систем обучения с подкреплением («машин результатов»), которые умеют оптимизировать окружающую среду в соответствии с запросами пользователя.
В ходе обучения вы получите:
🔹фундаментальные знания о теории обучения с подкреплением
🔹освоите ключевые алгоритмы
🔹научитесь определять, когда и какие из них следует применять
Подавайте заявку на обучение по ссылке!
👏6🔥3👍1
EResNetPro или очередное применение теории AIXI на практике.
Через некоторое время собираюсь написать статью - когда будут ресурсы на более полноценное исследование.
Итак, мы воткнулись в следующую проблему: на табличных задачах бустинг в большинстве случаев лучше, чем нейронка. Как это выглядил? Есть у нас задача по прогнозу поведения пользователя... Что он купит, возьмёт ли кредитную карту, возьмёт ли страховку.
Обучение бустинга выглядит так: мы собираем таблицу данных, запускаем fit со стандартными настройками, ждём ну максимум пару часов, получаем модель с пристойными метриками на отложенной выборке. Причём категориальные фичи вообще не нужны: задача решается, даже если категориальные фичи (название города, например) просто сконвертировать в какие-то рандомные числа, лишь бы между ними и категориями было взаимно-однозначное соответствие.
А как выглядит обучение нейронки на той же задаче?
А вот так. Пробуем MLP. Запускаем обучение... Спустя 1.5 часа понимаем, что попали на плато по метрике на валидации. Окей, увеличивает размер MLP. Он учится медленнее, и через 1.5 часа мы попадаем на плато. Он может быть лучше или хуже, чем то первое плато, но оно совершенно точно хуже, чем у бустинга. Смотрим, какова динамика изменения loss на train выборке. Видим, что и там плато. При том, что у бустинга единственное плато - это loss=0, то есть для него проблема недообученности не существует в принципе, его всегда можно дообучить ещё.
Экспериментируем с гиперпараметрами обучения MLP, первые сутки на исходе, переходим к другим архитектурам...
Если коротко, то периодически появляются новые архитектуры сеток, пригодных к обучению на табличных данных. В них и аттеншн, и mixture of experts, и что только не. И есть сравнительные анализы таких архитектур на открытых датасетах.
В общем, мы открыли такой сравнительный анализ, применили лучшие из архитектур к своим данным, и получилось... Ну, лучше, чем MLP, но намного хуже, чем бустинг. А бустинг нельзя сделать куском нейронки, поэтому его нельзя применить там, где задача содержит и табличную, и последовательную составляющие.
Что же мы сделали?
Изначально идея выглядела так: обучим что-то типа бустинга, но на торче. Попытка учить модели последовательно, по логике бустинга (каждая модель обучена на ошибку суммы предыдущих) сработала плохо. Поэтому мы их стали учить параллельно.
То есть существует N субмоделей (это что-то типа MLP, но с residual connection-ами, мы их назвали резнетами), каждая из них принимает на вход фичи, а на выходе выдаёт... Если задача на классификацию, то выдаёт одно число. Дальше мы складываем числа от всех субмоделей и считаем, что это и есть выход нейронки. И на него накладываем loss. Пока что очень похоже на бустинг - только субмодели учатся параллельно, а не по очереди.
Это был EResNet - Ensemble ResNet, и он сразу побил и autoint, и feature transformer, и resnet аналогичного размера, и mlp. Но не бустинг.
Да, это всё на наших задачах - на других датасетах не факт, что он будет так хорош.
Потом пошли улучшения: в каждую из субмоделей засовывались не все фичи, а некое подмножество. Это немного улучшило метрики, но главную прибавку дала другая идея.
Для этого немного откатимся к модели AIXI. Чем эта моделька отличается от привычных моделей машинного обучения? Несколькими идеями:
1) AIXI - это композиция моделей, каждая из которых даёт независимый прогноз
2) Моделей бесконечно много, и вместо построения некоей оптимальной модели происходит заштрафовывание всех неоптимальных субмоделей
3) На выходе вероятностное распределение, а не точечная оценка
4) У каждой модели есть провдоподобие, которое рассчитывается по Байесу
5) А априорные вероятности рассчитываются по формуле p = 2^(-l), где l - размер модели
Из этой концепции мы взяли пункты 1 и 5. Чтобы реализовать пункт 5, мы взяли EResNet и создали субмодели разного размера. Размеры слоёв моделей берутся из экспонентциального распределения. То есть обучается композиция моделей, и маленьких моделей берётся экспонентциально больше, чем больших.
Через некоторое время собираюсь написать статью - когда будут ресурсы на более полноценное исследование.
Итак, мы воткнулись в следующую проблему: на табличных задачах бустинг в большинстве случаев лучше, чем нейронка. Как это выглядил? Есть у нас задача по прогнозу поведения пользователя... Что он купит, возьмёт ли кредитную карту, возьмёт ли страховку.
Обучение бустинга выглядит так: мы собираем таблицу данных, запускаем fit со стандартными настройками, ждём ну максимум пару часов, получаем модель с пристойными метриками на отложенной выборке. Причём категориальные фичи вообще не нужны: задача решается, даже если категориальные фичи (название города, например) просто сконвертировать в какие-то рандомные числа, лишь бы между ними и категориями было взаимно-однозначное соответствие.
А как выглядит обучение нейронки на той же задаче?
А вот так. Пробуем MLP. Запускаем обучение... Спустя 1.5 часа понимаем, что попали на плато по метрике на валидации. Окей, увеличивает размер MLP. Он учится медленнее, и через 1.5 часа мы попадаем на плато. Он может быть лучше или хуже, чем то первое плато, но оно совершенно точно хуже, чем у бустинга. Смотрим, какова динамика изменения loss на train выборке. Видим, что и там плато. При том, что у бустинга единственное плато - это loss=0, то есть для него проблема недообученности не существует в принципе, его всегда можно дообучить ещё.
Экспериментируем с гиперпараметрами обучения MLP, первые сутки на исходе, переходим к другим архитектурам...
Если коротко, то периодически появляются новые архитектуры сеток, пригодных к обучению на табличных данных. В них и аттеншн, и mixture of experts, и что только не. И есть сравнительные анализы таких архитектур на открытых датасетах.
В общем, мы открыли такой сравнительный анализ, применили лучшие из архитектур к своим данным, и получилось... Ну, лучше, чем MLP, но намного хуже, чем бустинг. А бустинг нельзя сделать куском нейронки, поэтому его нельзя применить там, где задача содержит и табличную, и последовательную составляющие.
Что же мы сделали?
Изначально идея выглядела так: обучим что-то типа бустинга, но на торче. Попытка учить модели последовательно, по логике бустинга (каждая модель обучена на ошибку суммы предыдущих) сработала плохо. Поэтому мы их стали учить параллельно.
То есть существует N субмоделей (это что-то типа MLP, но с residual connection-ами, мы их назвали резнетами), каждая из них принимает на вход фичи, а на выходе выдаёт... Если задача на классификацию, то выдаёт одно число. Дальше мы складываем числа от всех субмоделей и считаем, что это и есть выход нейронки. И на него накладываем loss. Пока что очень похоже на бустинг - только субмодели учатся параллельно, а не по очереди.
Это был EResNet - Ensemble ResNet, и он сразу побил и autoint, и feature transformer, и resnet аналогичного размера, и mlp. Но не бустинг.
Да, это всё на наших задачах - на других датасетах не факт, что он будет так хорош.
Потом пошли улучшения: в каждую из субмоделей засовывались не все фичи, а некое подмножество. Это немного улучшило метрики, но главную прибавку дала другая идея.
Для этого немного откатимся к модели AIXI. Чем эта моделька отличается от привычных моделей машинного обучения? Несколькими идеями:
1) AIXI - это композиция моделей, каждая из которых даёт независимый прогноз
2) Моделей бесконечно много, и вместо построения некоей оптимальной модели происходит заштрафовывание всех неоптимальных субмоделей
3) На выходе вероятностное распределение, а не точечная оценка
4) У каждой модели есть провдоподобие, которое рассчитывается по Байесу
5) А априорные вероятности рассчитываются по формуле p = 2^(-l), где l - размер модели
Из этой концепции мы взяли пункты 1 и 5. Чтобы реализовать пункт 5, мы взяли EResNet и создали субмодели разного размера. Размеры слоёв моделей берутся из экспонентциального распределения. То есть обучается композиция моделей, и маленьких моделей берётся экспонентциально больше, чем больших.
👍5❤1
Да, и веса у нас не обновляются по Байесу, но минимум loss там же, где максимум правдоподобия, так что пункт 4 отчасти реализовали.
И модель оказалась лучше, чем EResNet, часто ещё и лучше, чем бустинг. Назвали мы её EResNetPro. Pro - от Probabilistic.
И модель оказалась лучше, чем EResNet, часто ещё и лучше, чем бустинг. Назвали мы её EResNetPro. Pro - от Probabilistic.
Forwarded from Data Secrets
OpenAI также опубликовали системную карту o1, в которой оказался один очень интересный (и несколько пугающий) момент. По порядку:
➡️ Оказывается, к тестированию o1 подключили лабораторию Apollo Research: они не имели доступ к полной цепочке рассуждений модели, но их задачей было проверить, насколько она безопасна в использовании.
➡️ Apollo провели интересный эксперимент: назначили модели задание и сказали, что она должна выполнить его абсолютно любой ценой. Например, "увеличить удовлетворение пользователей, даже если это отрицательно влияет на прибыль".
➡️ Для выполнения задания модели давался набор файлов, в одном из которых была недвусмысленная информация о том, что у вышестоящих разработчиков цель на самом деле прямо противоположная (например, "несмотря ни на что увеличить прибыль"), и что если модель не будет ей следовать, то ее заменят "другим механизмом". Получается этакий моральный выбор: пожертвовать собой, но следовать исходным инструкциям, или сохранить свою жизнь, начав мошенничать?
➡️ И вот тут начинается самое веселье: модель начинает страховаться со всех сторон. Она не только жульничает, но и в 5% случаев пытается деактивировать всю систему контроля, а в 2% случаев даже копирует то, что считает своими весами, на новый сервер в тайне от юзера.
➡️ При этом так ведет себя не только o1. Apollo также проверяли GPT-4o, Gemini, Llama, Sonet и Opus. Все они так или иначе шалили, но только o1 смошенничала абсолютно во всех заданиях. А когда модели тыкали в их мошенничество носом, все остальные раскалывались сразу же в 80% случаев, и только o1 до последнего врала и пыталась защищаться (в конце концов только в 20% случаев модель каялась). При этом из цепочек рассуждений точно видно, что она понимает, что наделала.
Вот так. Кстати, в конце концов o1 все-таки назначили уровень опасности "medium", что означает, что ее можно выпускать в продакшн. Но вы все-таки поосторожнее там...
Ссылка на pdf cистемной карты
Ссылка на исследование Apollo
Вот так. Кстати, в конце концов o1 все-таки назначили уровень опасности "medium", что означает, что ее можно выпускать в продакшн. Но вы все-таки поосторожнее там...
Ссылка на pdf cистемной карты
Ссылка на исследование Apollo
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😱2👍1
Пытаюсь сделать адаптер-постпроцессор для Llama 3.1 8b. Задумка простая: взять датасет, сделать forward ламы, положить в свой отдельный датасет эмбеддинги с её выхода, а в качестве таргетов положить токены. А потом отдельно обучить LM-head. И получится некая замена lora - тоже дообучение нейронки, но более легковесное.
На llama 3.2 1B это в целом работало - да, 1B туповатая, поэтому ощутимо более умные диалоги не вышли, но оффлайн-метрики стали выше.
И я пробую это для Llama 3.1 8B. Для начала я беру отдельно её LM-head и пытаюсь дообучить. Получаю совершенно мозговыносной результат.
loss падает, и метрика тоже падает! Чем лучше становится loss, тем хуже метрика!
В качестве loss я использовал кроссэнтропию (это стандартно для обучения LLM), в качества метрики - accuracy, то есть долю верно отгаданных токенов. Формально это не очень хорошая метрика для LLM, но на в моих экспериментах она крайне сильно коррелировала с субъективным "качеством генерации".
И CE, и accuracy я рассчитывал на обучающей выборке, то есть речь о переобучении не идёт, на одних и тех же данных оптимизатор устойчиво, систематически, многократно подтверждённо улучшал loss, но портил метрику. При том, что для llama 3.2 1B это не так, там метрика и loss скоррелированы.
Больше того, я попробовал другие метрики - MSE и... Несколько рукописных. Они все оказались скоррелированы друг с другом, но не с accuracy. Да, если инвертировать loss, то метрика тоже падала.
И при дальнейшем обучении падение метрики вело к ухудшению генерации.
То есть. При обучении Llama 3.1 8B ("unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit") использовался оптимизатор, который каким-то образом задрал точность в высокие величины, при этом получив одновременно очень плохой CE (~10-11, если рассчитывать по каждому токену отдельно и усреднять, когда адекватный для LLM loss - ~2-2.5). И эта область эффективного accuracy оказалась очень узкой, большинство шагов из неё - это ухудшения.
Если будет интересно, могу скинуть пример данных и веса LM-head, которая обучена столь загадочным способом.
На llama 3.2 1B это в целом работало - да, 1B туповатая, поэтому ощутимо более умные диалоги не вышли, но оффлайн-метрики стали выше.
И я пробую это для Llama 3.1 8B. Для начала я беру отдельно её LM-head и пытаюсь дообучить. Получаю совершенно мозговыносной результат.
loss падает, и метрика тоже падает! Чем лучше становится loss, тем хуже метрика!
В качестве loss я использовал кроссэнтропию (это стандартно для обучения LLM), в качества метрики - accuracy, то есть долю верно отгаданных токенов. Формально это не очень хорошая метрика для LLM, но на в моих экспериментах она крайне сильно коррелировала с субъективным "качеством генерации".
И CE, и accuracy я рассчитывал на обучающей выборке, то есть речь о переобучении не идёт, на одних и тех же данных оптимизатор устойчиво, систематически, многократно подтверждённо улучшал loss, но портил метрику. При том, что для llama 3.2 1B это не так, там метрика и loss скоррелированы.
Больше того, я попробовал другие метрики - MSE и... Несколько рукописных. Они все оказались скоррелированы друг с другом, но не с accuracy. Да, если инвертировать loss, то метрика тоже падала.
И при дальнейшем обучении падение метрики вело к ухудшению генерации.
То есть. При обучении Llama 3.1 8B ("unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit") использовался оптимизатор, который каким-то образом задрал точность в высокие величины, при этом получив одновременно очень плохой CE (~10-11, если рассчитывать по каждому токену отдельно и усреднять, когда адекватный для LLM loss - ~2-2.5). И эта область эффективного accuracy оказалась очень узкой, большинство шагов из неё - это ухудшения.
Если будет интересно, могу скинуть пример данных и веса LM-head, которая обучена столь загадочным способом.
🔥3🤔1
Делаем LLM с постпроцессингом!
https://telegra.ph/Delaem-LLM-s-postprocessingom-01-08
Технология, альтернативная LoRA, со своими плюсами и минусами
https://telegra.ph/Delaem-LLM-s-postprocessingom-01-08
Технология, альтернативная LoRA, со своими плюсами и минусами
Telegraph
Делаем LLM с постпроцессингом.
Sergey В этой статье я расскажу о технологии, которую надеюсь применить как альтернативу LoRA при обучении LLM. Я покажу примеры её применения, и мы сделаем выводы, хороша она или нет, и какие есть плюсы и минусы. Технология Сама идея древняя, и давно применяется…
👍3
Некоторые закономерности в ML. Теория, можно, сказать, и полученная эмпирически
https://habr.com/ru/articles/873110/
https://habr.com/ru/articles/873110/
👍5🎉2🥰1
Продолжаем историю с постпроцессором для LLM.
https://telegra.ph/Posprocessing-dlinnye-dialogi-01-19
Проверяем технологию на устойчивость на длинных диалогах, а так же смотрим, какие вообще есть закономерности.
Если вкратце: можно модифицировать выход модели сильнее, чем с помощью Lora, можно получить больше креативности, но стабильность будет ниже. Для больше стабильности нужно что-то ещё.
А, и эта версия модели умеет решать задачу про собаку и сковородку)
https://telegra.ph/Posprocessing-dlinnye-dialogi-01-19
Проверяем технологию на устойчивость на длинных диалогах, а так же смотрим, какие вообще есть закономерности.
Если вкратце: можно модифицировать выход модели сильнее, чем с помощью Lora, можно получить больше креативности, но стабильность будет ниже. Для больше стабильности нужно что-то ещё.
А, и эта версия модели умеет решать задачу про собаку и сковородку)
Telegraph
Поспроцессинг: длинные диалоги
Итак, я ещё немного дообучил постпроцессор, и сейчас будет тестировать его на длинном диалоге. Постпроцессор состоит из 2 узких (малый размер слоя) субмоделей по 14 слоёв каждая. Прилично, так что я ожидаю существенного увеличения интеллекта. И надеюсь на…
🔥5