Objective (или лосс) для траектории τ навеян уравнениями Беллмана для temporal-difference (TD) алгоритмов, это сумма, в которой потоки по рёбрам траектории из текущих состояний с плюсом, а терминальные вознаграждения следующих состояний и потоки из них с минусом. Для борьбы разными масштабами потоков (на входных узлах он большой, на выходных маленький), в flow matching objective используются логарифмы потоков. Минимизация этой objective и даёт правильные потоки с нужными нам свойствами, позволяющими сэмплить из полиси. Возможны также и другие objectives, например, detailed balance (https://arxiv.org/abs/2111.09266) и trajectory balance (https://arxiv.org/abs/2201.13259) из более поздних работ.
Если я правильно понял, с этим лоссом осуществляется шаг градиентного спуска (в целом SGD, конкретно здесь Adam) с четырьмя траекториями в минибатче. Обучение GFlowNet идёт бутстрапом -- сэмплим траектории (можно текущим полиси, тогда это on-policy обучение, а можно другими полиси и вообще иными средствами для исследования пространства, в том числе поднимая данные из базы данных, тогда это всё off-policy), получаем для них reward, считаем лосс и обновляем текущую полиси (градиентным спуском).
В случае молекул была задача сгенерировать множество маленьких молекул с высоким reward (который определялся через прокси-модель). Описывающий молекулу граф является последовательностью аддитивных редактирований, где на каждом шаге агент выбирает один из 72 предопределённых блоков для добавления, а также атом, к которому тот будет добавлен. Есть дополнительное действие для остановки редактирования. Эта последовательность редактирований даёт DAG MDP. Для прокси использовалась Message Passing Neural Network (MPNN, https://arxiv.org/abs/1704.01212) с GRU внутри, которой подавался граф атомов; для предсказателя потока — MPNN с графом блоков. GFN сработал хорошо и нашёл больше разнообразных кандидатов чем бейзлайны с MCMC (MARS) и RL (PPO).
Ссылки в тему:
* В ноябре 2023 в Mila прошёл GFlowNet Workshop (https://www.gflownet.org/), видео материалы выложены: https://www.youtube.com/watch?v=H2w-TrAzrBA&list=PLvSH07QabjqZRKKuq92HN7zXqUIDk6Nyx.
* Есть большой туториал: http://yoshuabengio.org/gflownet-tutorial и Colab https://colab.research.google.com/drive/1fUMwgu2OhYpQagpzU5mhe9_Esib3Q2VR.
* Подборка ресурсов по теме: https://www.gflownet.org/resources.html
* Кроме кода к статье есть библиотеки для работы с GFlowNets, например, gflownet (https://github.com/recursionpharma/gflownet) от Recursion и частично тех же авторов, включая Бенжио младшего; и torchgfn (https://github.com/GFNOrg/torchgfn) с участием Бенжио старшего.
В принципе, кажется, GFlowNets могут быть интересным вариантом для (до)обучения LLM. Даже как минимум одна свежая работа на эту тему уже есть: “Amortizing intractable inference in large language models” (https://arxiv.org/abs/2310.04363), в которой ими делают файнтюнинг.
Если я правильно понял, с этим лоссом осуществляется шаг градиентного спуска (в целом SGD, конкретно здесь Adam) с четырьмя траекториями в минибатче. Обучение GFlowNet идёт бутстрапом -- сэмплим траектории (можно текущим полиси, тогда это on-policy обучение, а можно другими полиси и вообще иными средствами для исследования пространства, в том числе поднимая данные из базы данных, тогда это всё off-policy), получаем для них reward, считаем лосс и обновляем текущую полиси (градиентным спуском).
В случае молекул была задача сгенерировать множество маленьких молекул с высоким reward (который определялся через прокси-модель). Описывающий молекулу граф является последовательностью аддитивных редактирований, где на каждом шаге агент выбирает один из 72 предопределённых блоков для добавления, а также атом, к которому тот будет добавлен. Есть дополнительное действие для остановки редактирования. Эта последовательность редактирований даёт DAG MDP. Для прокси использовалась Message Passing Neural Network (MPNN, https://arxiv.org/abs/1704.01212) с GRU внутри, которой подавался граф атомов; для предсказателя потока — MPNN с графом блоков. GFN сработал хорошо и нашёл больше разнообразных кандидатов чем бейзлайны с MCMC (MARS) и RL (PPO).
Ссылки в тему:
* В ноябре 2023 в Mila прошёл GFlowNet Workshop (https://www.gflownet.org/), видео материалы выложены: https://www.youtube.com/watch?v=H2w-TrAzrBA&list=PLvSH07QabjqZRKKuq92HN7zXqUIDk6Nyx.
* Есть большой туториал: http://yoshuabengio.org/gflownet-tutorial и Colab https://colab.research.google.com/drive/1fUMwgu2OhYpQagpzU5mhe9_Esib3Q2VR.
* Подборка ресурсов по теме: https://www.gflownet.org/resources.html
* Кроме кода к статье есть библиотеки для работы с GFlowNets, например, gflownet (https://github.com/recursionpharma/gflownet) от Recursion и частично тех же авторов, включая Бенжио младшего; и torchgfn (https://github.com/GFNOrg/torchgfn) с участием Бенжио старшего.
В принципе, кажется, GFlowNets могут быть интересным вариантом для (до)обучения LLM. Даже как минимум одна свежая работа на эту тему уже есть: “Amortizing intractable inference in large language models” (https://arxiv.org/abs/2310.04363), в которой ими делают файнтюнинг.
arXiv.org
Flow Network based Generative Models for Non-Iterative Diverse...
This paper is about the problem of learning a stochastic policy for generating an object (like a molecular graph) from a sequence of actions, such that the probability of generating an object is...
👍6🔥2🤔1
Приготовьтесь к запуску GPT Store на следующей неделе!
https://techcrunch.com/2024/01/04/openais-app-store-for-gpts-will-launch-next-week/
"GPTs effectively democratize generative AI app creation — at least for apps that use OpenAI’s family of models. In fact, GPTs could kill consultancies whose business models revolve around building what are essentially GPTs for customers."
https://techcrunch.com/2024/01/04/openais-app-store-for-gpts-will-launch-next-week/
"GPTs effectively democratize generative AI app creation — at least for apps that use OpenAI’s family of models. In fact, GPTs could kill consultancies whose business models revolve around building what are essentially GPTs for customers."
TechCrunch
OpenAI's app store for GPTs will launch next week | TechCrunch
OpenAI plans to launch its app store for GPTs, the GPT Store, sometime soon. But there's no word on revenues sharing.
❤13🤔5👍3
[Singapore] TinyLlama: An Open-Source Small Language Model
Peiyuan Zhang, Guangtao Zeng, Tianduo Wang, Wei Lu
Статья:https://arxiv.org/abs/2401.02385
Код: https://github.com/jzhang38/TinyLlama
В полку SLM (Small Language Models) прибыло! TinyLlama — это моделька размера 1.1B, обученная на 3T токенов! Для сравнения намного большую 70B Шиншиллу (https://news.1rj.ru/str/gonzo_ML/1216) обучали на меньшем датасете в 1.4T токенов. По рецептам Шиншиллы оптимальное обучение для 1B модели было бы на 20B токенов (https://news.1rj.ru/str/gonzo_ML/1223), а тут 3T, почувствуйте разницу! Кажется, это в первый раз для настолько малой модели.
Из других SLM за последнее время были, например, Phi 1 и 1.5 с 1.3B (https://news.1rj.ru/str/gonzo_ML/1871), Phi 2 c 2.7B (https://news.1rj.ru/str/gonzo_ML/2173) или Gemini Nano с 1.8B и 3.2B (https://news.1rj.ru/str/gonzo_ML/2117).
Это интересное направление, потому что в целом все бегут за большими размерами, и ниша малых моделей недоисследована, а с учётом важности инференса они не менее важны. При этом давно уже есть наблюдения, что можно пообучать модель сильно за пределами compute optimal рецептов Шиншиллы, и это продолжает приносить плоды.
Архитектура классическая, декодер трансформера по рецепту Llama 2 с её же токенизатором. Данные собрали из SlimPajama (почищенный вариант RedPajama) и Starcoderdata, суммарно 950B токенов, так что обучали примерно 3 эпохи. Сэмплили датасеты в пропорции 7:3.
При этом задействовали разные продвинутые штуки и взяли RoPE энкодинги, RMSNorm pre-norm, SwiGLU, grouped-query attention.
Для скейлинга и ускорения задействовали Fully Sharded Data Parallel (FSDP) из Пайторча, свежий Flash Attention 2, заменили fused SwiGLU из xFormers на оригинальный и сэкономили памяти (это, кстати, для меня удивительно, мои первые ожидания, что fused реализация должна быть лучше) -- это позволило уместить модель в 40Gb памяти.
В итоге на A100-40G получили training throughput в 24,000 токенов в секунду. Для обучения на 300B токенов TinyLlama-1.1B требуется 3,456 A100 GPU-часов, в то время как у Pythia эта цифра равна 4,830 и у MPT’s вообще 7,920 часов.
Использовали для обучения Lit-GPT (https://github.com/Lightning-AI/lit-gpt, базируется на nanoGPT). AdamW, cosine learning rate, warmup, gradient clipping.
Обучалось 90 дней на 16 A100-40G GPU. По ценам AWS на p4d (https://aws.amazon.com/ec2/instance-types/p4/) это было бы примерно $140k между прочим.
Результат хорошо бьёт бейзлайны в лице OPT-1.3B, Pythia-1.0B и Pythia-1.4B. На MMLU правда хуже. С увеличением вычислительного бюджета перформанс продолжает расти, не понял только почему он более шумным становится.
Кажется, работа -- верх открытости. Весь код обучения, промежуточные чекпойнты, все детали обучения доступны.
Респект!
Peiyuan Zhang, Guangtao Zeng, Tianduo Wang, Wei Lu
Статья:https://arxiv.org/abs/2401.02385
Код: https://github.com/jzhang38/TinyLlama
В полку SLM (Small Language Models) прибыло! TinyLlama — это моделька размера 1.1B, обученная на 3T токенов! Для сравнения намного большую 70B Шиншиллу (https://news.1rj.ru/str/gonzo_ML/1216) обучали на меньшем датасете в 1.4T токенов. По рецептам Шиншиллы оптимальное обучение для 1B модели было бы на 20B токенов (https://news.1rj.ru/str/gonzo_ML/1223), а тут 3T, почувствуйте разницу! Кажется, это в первый раз для настолько малой модели.
Из других SLM за последнее время были, например, Phi 1 и 1.5 с 1.3B (https://news.1rj.ru/str/gonzo_ML/1871), Phi 2 c 2.7B (https://news.1rj.ru/str/gonzo_ML/2173) или Gemini Nano с 1.8B и 3.2B (https://news.1rj.ru/str/gonzo_ML/2117).
Это интересное направление, потому что в целом все бегут за большими размерами, и ниша малых моделей недоисследована, а с учётом важности инференса они не менее важны. При этом давно уже есть наблюдения, что можно пообучать модель сильно за пределами compute optimal рецептов Шиншиллы, и это продолжает приносить плоды.
Архитектура классическая, декодер трансформера по рецепту Llama 2 с её же токенизатором. Данные собрали из SlimPajama (почищенный вариант RedPajama) и Starcoderdata, суммарно 950B токенов, так что обучали примерно 3 эпохи. Сэмплили датасеты в пропорции 7:3.
При этом задействовали разные продвинутые штуки и взяли RoPE энкодинги, RMSNorm pre-norm, SwiGLU, grouped-query attention.
Для скейлинга и ускорения задействовали Fully Sharded Data Parallel (FSDP) из Пайторча, свежий Flash Attention 2, заменили fused SwiGLU из xFormers на оригинальный и сэкономили памяти (это, кстати, для меня удивительно, мои первые ожидания, что fused реализация должна быть лучше) -- это позволило уместить модель в 40Gb памяти.
В итоге на A100-40G получили training throughput в 24,000 токенов в секунду. Для обучения на 300B токенов TinyLlama-1.1B требуется 3,456 A100 GPU-часов, в то время как у Pythia эта цифра равна 4,830 и у MPT’s вообще 7,920 часов.
Использовали для обучения Lit-GPT (https://github.com/Lightning-AI/lit-gpt, базируется на nanoGPT). AdamW, cosine learning rate, warmup, gradient clipping.
Обучалось 90 дней на 16 A100-40G GPU. По ценам AWS на p4d (https://aws.amazon.com/ec2/instance-types/p4/) это было бы примерно $140k между прочим.
Результат хорошо бьёт бейзлайны в лице OPT-1.3B, Pythia-1.0B и Pythia-1.4B. На MMLU правда хуже. С увеличением вычислительного бюджета перформанс продолжает расти, не понял только почему он более шумным становится.
Кажется, работа -- верх открытости. Весь код обучения, промежуточные чекпойнты, все детали обучения доступны.
Респект!
arXiv.org
TinyLlama: An Open-Source Small Language Model
We present TinyLlama, a compact 1.1B language model pretrained on around 1 trillion tokens for approximately 3 epochs. Building on the architecture and tokenizer of Llama 2, TinyLlama leverages...
👍40🔥14❤7