Forwarded from что-то на DL-ском
А вы знали, что есть способ улучшить генерализацию любой кодовой модели? Как? Применив до этого модель от Microsoft – CodeExecutor
Сложно-сложно, непонятно. Как я могу улучшить результаты своей модели, применив до этого CodeExecutor? А как именно надо применить?🤨
Итак, модель вышла в мае этого года. Основана она на предыдущей модели Microsoft под названием UnixCoder (2022). Коротко – чуваки взяли и поверх предыдущей модели на претрэйне обучали ее на предсказание трассировки по коду. Что за трассировка можно посмотреть во вложении, но по сути это состояние переменных в течении выполнения кода.
Они кстати выложили, как выглядит их датасет, но я нашла только test.😠 А собирали они его следующим образом: брали код из датасета CodeNet и прогоняли в песочнице, которая будет комплитить этот код и выдавать трассировку. Вау, как неожиданно. Ладно, на самом деле это не все, они еще зааугали данные различными операциями (вложения, там список). И получив AST дерево (тоже напомню во вложениях как оно выглядит), они получали элементы к которым они могут применить операции «мутаций»
Еще мне понравилось, что авторы вспомнили древний (ну реально, на фоне всех методов NLP) подход curriculum learning. Если коротко – это обучение с постепенным усложнением функции. Ну то есть начинаем с линейной, постепенно продвигаемся к выпуклой. Соответственно они начинали учить с однострочных кодов и увеличивали постепенно количество строк.
Так вот, как же она может то давать прирост величины результатов любой модели. Перед тем, как использовать кодовые модели просто прогоняем трестировку на данных и скарливаем. Все🧠 . По метрикам у моделей действительно увеличивается понимание кода.
🤗Модель
🖥 Код
Сложно-сложно, непонятно. Как я могу улучшить результаты своей модели, применив до этого CodeExecutor? А как именно надо применить?
Итак, модель вышла в мае этого года. Основана она на предыдущей модели Microsoft под названием UnixCoder (2022). Коротко – чуваки взяли и поверх предыдущей модели на претрэйне обучали ее на предсказание трассировки по коду. Что за трассировка можно посмотреть во вложении, но по сути это состояние переменных в течении выполнения кода.
Они кстати выложили, как выглядит их датасет, но я нашла только test.
Еще мне понравилось, что авторы вспомнили древний (ну реально, на фоне всех методов NLP) подход curriculum learning. Если коротко – это обучение с постепенным усложнением функции. Ну то есть начинаем с линейной, постепенно продвигаемся к выпуклой. Соответственно они начинали учить с однострочных кодов и увеличивали постепенно количество строк.
Так вот, как же она может то давать прирост величины результатов любой модели. Перед тем, как использовать кодовые модели просто прогоняем трестировку на данных и скарливаем. Все
🤗Модель
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Блог*
Чат*, у меня для вас задачка.
Есть вот такое простенькое AST для подмножества арифметических выражений:
Напишите код для вывода этих выражений так, чтобы:
* в них были корректно расставлены скобки (в частности, никаких два знака операции подряд)
* с учётом ассоциативности сложения (то есть
* без избыточных скобок (в частности, без скобок на топ-левеле и без скобок вокруг положительных литералов).
Отрицание на вычитание переправлять не надо.
Не то чтобы сильно сложная задача, но сложнее, чем кажется на первый взгляд.
Есть вот такое простенькое AST для подмножества арифметических выражений:
enum Expr {
Lit(i32),
Neg(Box<Self>),
Add(Box<Self>, Box<Self>),
}
(взял отсюда, да)Напишите код для вывода этих выражений так, чтобы:
* в них были корректно расставлены скобки (в частности, никаких два знака операции подряд)
* с учётом ассоциативности сложения (то есть
add(lit(1), add(lit(2), lit(3))) должно выводиться, как 1 + 2 + 3, а не 1 + (2 + 3))* без избыточных скобок (в частности, без скобок на топ-левеле и без скобок вокруг положительных литералов).
Отрицание на вычитание переправлять не надо.
Не то чтобы сильно сложная задача, но сложнее, чем кажется на первый взгляд.
Telegram
Блог*
#prog #rust #article
Efficient, Extensible, Expressive: Typed Tagless Final Interpreters in Rust
Efficient, Extensible, Expressive: Typed Tagless Final Interpreters in Rust
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Пересматриваю доклад прошлогоднего ArchDays и прям сердечко ёкает
👍1
Forwarded from DDDevotion
Извините, сегодня не про DDD, но я уверен, что наша индустрия безвозвратно меняется. И проблемы которые мы обсуждали последнее время просто перестанут быть актуальными.
Например, создание кастомной GPT – нам больше не нужна база знаний, мы все наши знания (в том числе код) загрузим в GPT. И любой разраб сможет писать туда вопросы и новые знания. И доменные эксперты тоже. Причем они смогут не только загружать ответы, но и спрашивать «а как оно сейчас-то реализовано?»
Очень резонировал спич Сатьи про инфраструктуру – да, кто-то должен думать про электричество и сервера, но в итоге мы поднимаемся по слоям абстракций все выше. И новый уровень программирования уже на пороге. Только не понимаю пока что, какое знание/ценность условный я буду добавлять.
https://www.youtube.com/watch?v=U9mJuUkhUzk
Например, создание кастомной GPT – нам больше не нужна база знаний, мы все наши знания (в том числе код) загрузим в GPT. И любой разраб сможет писать туда вопросы и новые знания. И доменные эксперты тоже. Причем они смогут не только загружать ответы, но и спрашивать «а как оно сейчас-то реализовано?»
Очень резонировал спич Сатьи про инфраструктуру – да, кто-то должен думать про электричество и сервера, но в итоге мы поднимаемся по слоям абстракций все выше. И новый уровень программирования уже на пороге. Только не понимаю пока что, какое знание/ценность условный я буду добавлять.
https://www.youtube.com/watch?v=U9mJuUkhUzk
YouTube
OpenAI DevDay: Opening Keynote
Join us for the opening keynote from OpenAI DevDay — OpenAI’s first developer conference.
We’re gathering developers from around the world for an in-person day of programming to learn about the latest AI advancements and explore what lies ahead.
New models…
We’re gathering developers from around the world for an in-person day of programming to learn about the latest AI advancements and explore what lies ahead.
New models…
Forwarded from emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc. (Ivan Zakrevsky)
Кратко о fitness functions. Любое приложение всегда стремится к энтропии. Как говорил известный в ИТ-индустрии Gregor Hohpe:
💬 It’s almost like enterprise IT is subject to the Second Law of Thermodynamics, which concludes that the entropy in an (isolated) system can never decrease - at best it can be constant, but usually it increases.
-- "Here’s why enterprise IT is so complex" by Gregor Hohpe
Технически невозможно контролировать качество работы каждого разработчика. Это побуждает индустрию искать способы поддержания качества архитектуры на принципиальном уровне. Одним из таких способов является Evolutionary Architecture.
Генетический механизм репродукции реализует адаптивный способ разрешения неопределенности.
Причина его существования заключается в том, что никто не знает какие условия обитания будут на планете завтра. Т.е. имеет место неопределенность условий существования. Вдруг завтра прилетит метеорит и изменится состав атмосферы?
В связи с этим, двуполое размножение обеспечивает постоянную генерацию новых генетических комбинаций. Мы просто не знаем какая именно генетическая комбинация окажется наиболее приспособленной к завтрашним условиям окружающей среды.
Те генетические комбинации, которые слабо приспособлены к текущим условиям окружающей среды, не должны препятствовать распространению более приспособленных комбинаций. Иными словами, если существует механизм формирования разнообразия генетических комбинаций, то должен существовать и механизм истребления слабо приспособленных генетических комбинаций. Именно поэтому двуполый механизм репродукции не может выполнять свои функции без хищников, назначение которых сводится к истреблению слабо приспособленных генетических комбинаций. Т.е. к селекции. Это как пропалывание грядки.
Зачастую проблема кодовой базы заключается в том, что никто и ничто не выполняет роль этого самого хищника, истребляющего несоответствующие решения. Поэтому больные решения хорошо размножаются.
Robert Martin говорил, что архитектура - это о том, как не надо делать. Иными словами, архитектурное решение - это сокращение количества возможных вариантов. Т.е. архитектура должна выполнять хищнические функции.
Чем отличаются собаки от волков? Волк имеет естественных врагов-хищников, а собаки - нет.
Вместо хищников, процесс селекции собак выполняют выставки и стандарты пород, которые фиксируют желаемые свойства пород.
Выводок, не соответствующий требованиям стандарта породы и допустимым пределам отклонения, отбраковывается и не получает сертификат соответствия. Его рыночная ценность падает, и он не используется заводчиками для репродукции.
По мере возникновения исторических изменений в породе, в стандарт вносятся изменения, требования ужесточаются, что обеспечивает прогресс породы.
Этот же принцип положен в основу Evolutionary Architecture. Архитектор выступает в роли автора стандарта породы, а разработчик - в роли заводчика, который выбирает (путём сравнения) для репродукции такой экземпляр породы из всех возможных, который наилучшим образом соответствует стандарту.
Роль стандарта породы выполняют fitness functions (функции соответствия, приспособленности). Они позволяют разработчикам измерить степень соответствия старого варианта системы и нового, и выбрать тот, который соответствует требованиям наилучшим образом.
Понимая, что требования fitness functions будут ужесточаться, разработчик всегда стремится увеличивать запас по требованиям , что вынуждает искать его новые решения и постоянно повышать собственный уровень знаний.
Хотя fitness functions выполняют охранные функции, препятствуя деградации свойств системы, главная их ценность заключается не в этом, а в создании благоприятных условий для постоянного развития уровня квалификации специалистов.
Наиболее важными я считаю fitness functions с нагрузочным и объемным тестированием, которые мгновенно выявляют костыльные запросы и побуждают разработчиков изначально закладывать в систему решения с дальним горизонтом развития, например, такие, как CQRS.
Пример реализации fitness functions.
💬 It’s almost like enterprise IT is subject to the Second Law of Thermodynamics, which concludes that the entropy in an (isolated) system can never decrease - at best it can be constant, but usually it increases.
-- "Here’s why enterprise IT is so complex" by Gregor Hohpe
Технически невозможно контролировать качество работы каждого разработчика. Это побуждает индустрию искать способы поддержания качества архитектуры на принципиальном уровне. Одним из таких способов является Evolutionary Architecture.
Генетический механизм репродукции реализует адаптивный способ разрешения неопределенности.
Причина его существования заключается в том, что никто не знает какие условия обитания будут на планете завтра. Т.е. имеет место неопределенность условий существования. Вдруг завтра прилетит метеорит и изменится состав атмосферы?
В связи с этим, двуполое размножение обеспечивает постоянную генерацию новых генетических комбинаций. Мы просто не знаем какая именно генетическая комбинация окажется наиболее приспособленной к завтрашним условиям окружающей среды.
Те генетические комбинации, которые слабо приспособлены к текущим условиям окружающей среды, не должны препятствовать распространению более приспособленных комбинаций. Иными словами, если существует механизм формирования разнообразия генетических комбинаций, то должен существовать и механизм истребления слабо приспособленных генетических комбинаций. Именно поэтому двуполый механизм репродукции не может выполнять свои функции без хищников, назначение которых сводится к истреблению слабо приспособленных генетических комбинаций. Т.е. к селекции. Это как пропалывание грядки.
Зачастую проблема кодовой базы заключается в том, что никто и ничто не выполняет роль этого самого хищника, истребляющего несоответствующие решения. Поэтому больные решения хорошо размножаются.
Robert Martin говорил, что архитектура - это о том, как не надо делать. Иными словами, архитектурное решение - это сокращение количества возможных вариантов. Т.е. архитектура должна выполнять хищнические функции.
Чем отличаются собаки от волков? Волк имеет естественных врагов-хищников, а собаки - нет.
Вместо хищников, процесс селекции собак выполняют выставки и стандарты пород, которые фиксируют желаемые свойства пород.
Выводок, не соответствующий требованиям стандарта породы и допустимым пределам отклонения, отбраковывается и не получает сертификат соответствия. Его рыночная ценность падает, и он не используется заводчиками для репродукции.
По мере возникновения исторических изменений в породе, в стандарт вносятся изменения, требования ужесточаются, что обеспечивает прогресс породы.
Этот же принцип положен в основу Evolutionary Architecture. Архитектор выступает в роли автора стандарта породы, а разработчик - в роли заводчика, который выбирает (путём сравнения) для репродукции такой экземпляр породы из всех возможных, который наилучшим образом соответствует стандарту.
Роль стандарта породы выполняют fitness functions (функции соответствия, приспособленности). Они позволяют разработчикам измерить степень соответствия старого варианта системы и нового, и выбрать тот, который соответствует требованиям наилучшим образом.
Понимая, что требования fitness functions будут ужесточаться, разработчик всегда стремится увеличивать запас по требованиям , что вынуждает искать его новые решения и постоянно повышать собственный уровень знаний.
Хотя fitness functions выполняют охранные функции, препятствуя деградации свойств системы, главная их ценность заключается не в этом, а в создании благоприятных условий для постоянного развития уровня квалификации специалистов.
Наиболее важными я считаю fitness functions с нагрузочным и объемным тестированием, которые мгновенно выявляют костыльные запросы и побуждают разработчиков изначально закладывать в систему решения с дальним горизонтом развития, например, такие, как CQRS.
Пример реализации fitness functions.
The Architect Elevator
Here’s why enterprise IT is so complex
Enterprise IT is routinely plagued by excessive complexity. It might be subject to the Second Law of Thermodynamics but it’s certainly subject to Gregor’s Law.
This media is not supported in your browser
VIEW IN TELEGRAM
Из заметки Михаила Корнеева узнал про FastStream. В целом хорошая идея с единым интерфейсом для работы с разными очередями и генерацией документации с описанием топиков и структурой сообщений. Но самым интересным показался их отдельный пакет faststream-gen для генерации кода приложения, где используется FastStream, и тестов на этот код. Для этого достаточно вести описание топиков, хостов, конкретного брокера и т.д. Правда под капотом пакет использует OpenAI API, так что нужно вводить свой ключ. С учетом быстрого развития техник по запуску LLM на локальных машинах ждём дальнейшее распространение такого подхода у авторов пакетов
👍1
Недавно слушал доклад про схожее решение с автоматизацией работы доменного эксперта. Тут пошли дальше: ассистент не только помогает с документацией, но и может в код. Явно вырисовывается тренд на 2024 год, осталось поймать волну 🏄♂️
👍2
Forwarded from Pavel Zloi
Всем привет! Хочу рассказать про ещё одну обученную мною модель под названием PavelGPT-7B-128K-v0.1-LoRA, на этот раз я взял скрипты Saiga (rulm) и модифицировал их таким образом, чтобы получить языковую модель типа INSTRUCT, но с данными оформленными в виде чата (для того чтобы её было легко использовать в связке с проектами типа text-generation-webui).
В качестве основы взял Yarn-Mistral-7b-128k, а датасеты собирал так, чтобы модель могла не только решать базовые задачи, но и отгадывать загадки, а ещё решать несложные математические задачки, писать небольшие тексты, составлять оглавление и создавать простые скрипты.
Вот все ссылочки, которые могут пригодиться:
- скрипт обучения модели
- отчёт обучения на wandb
- тестовые ответы модели в карточке на huggingface
- скрипт запуска модели
PS. Мне давно хотелось сделать себе чуть более умного помощника для работы с документацией которую я храню в Obsidian и пока что впечатления от использования данной модели более приятные чем от предыдущих моих экспериментов.
Надеюсь вам данная моделька тоже окажется полезной :)
#ai #saiga #gpt
В качестве основы взял Yarn-Mistral-7b-128k, а датасеты собирал так, чтобы модель могла не только решать базовые задачи, но и отгадывать загадки, а ещё решать несложные математические задачки, писать небольшие тексты, составлять оглавление и создавать простые скрипты.
Вот все ссылочки, которые могут пригодиться:
- скрипт обучения модели
- отчёт обучения на wandb
- тестовые ответы модели в карточке на huggingface
- скрипт запуска модели
PS. Мне давно хотелось сделать себе чуть более умного помощника для работы с документацией которую я храню в Obsidian и пока что впечатления от использования данной модели более приятные чем от предыдущих моих экспериментов.
Надеюсь вам данная моделька тоже окажется полезной :)
#ai #saiga #gpt
👍2