Авторы: Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика. Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Запустился GPTs Store: https://chat.openai.com/gpts
(правильная страница пока открывается не у всех, но если вы читаете это 11.01 — то уже должно работать. Доступно только для платных подписчиков!)
Тезисно:
— есть тренды, можно смотреть, что популярно у других (не придётся перелопачивать кучи всякого разного)
— каждую неделю будут показываться новые GPTs в секции «featured» (читай «выбор редакции»)
— на первой неделе это:
1) Персональные рекомендации по маршруту AllTrails
2) Поиск и суммаризация по 200М научных документов Consensus
3) Учитель программирования от Khan Academy
4) Ассистент в создании презентаций Canva
5) Помощник по выбору следующей к прочтению книги
6) AI-учитель по математике и другим наукам
— есть автоматическая система ревью GPTs (видимо, через агента на GPT-4): постить NSFW без устали не удастся
— И самое главное: авторы из США будут получать оплату в зависимости от user engagement (деталей нет — не ясно, время ли это, кол-во сообщений или что-то ещё). Оплата запустится до конца Q1
Всем творцам — удачи, а пользователям — пользы от моделек!
NVIDIA анонсировала на CES 2024 обновление линейки карт GeForce RTX 40 добавкой карт SUPER (https://nvidianews.nvidia.com/news/geforce-rtx-40-super-series): 4080 SUPER, 4070 Ti SUPER, 4070 SUPER.
Каким-то особым прорывом не выглядит, флагман 4090 всё равно быстрее (https://www.nvidia.com/en-gb/geforce/graphics-cards/compare/). С другой стороны неплохая производительность меньше чем за $1000.
Продолжая тему с GFlowNets, Йошуа Бенжио набирает постдоков, исследователей и инженеров в свою группу по работе над AI Alignment с вероятностными гарантиями безопасности. И отдельно ищет себе сильного постдока на тему про GFlowNets с применением к AI Safety. Пишите!
"I am looking for postdocs, research engineers and research scientists who would like to join me in one form or another in figuring out AI alignment with probabilistic safety guarantees, along the lines of the research program described in my keynote (https://www.alignment-workshop.com/nola-2023) at the New Orleans December 2023 Alignment Workshop.
I am also specifically looking for a postdoc with a strong mathematical background (ideally an actual math or math+physics or math+CS degree) to take a leadership role in supervising the Mila research on probabilistic inference and GFlowNets, with applications in AI safety, system 2 deep learning, and AI for science.
Please contact me if you are interested."
https://www.facebook.com/yoshua.bengio/posts/pfbid02EhTdd3HFEfhj2qfTqCKMrJCqjHPa9gu8A8tm8d6jrsqpN5znG2nGYonFEtLob5Bxl
Также смотрите его тематический кейноут про AI Alignment и немного про GFlowNets:
https://slideslive.com/39014230/towards-quantitative-safety-guarantees-and-alignment
Цель: минимизация суммарных FLOPS на обучение и весь инференс. Для трансформера с N параметров используется стандартная аппроксимация для FLOPS: 6N на токен обучения и 2N на токен в инференсе, соответственно нужно найти argmin 6NDtr + 2NDinf, где Dtr и Dinf -- число токенов в обучении и инференсе соответственно.
Задача в работе про Шиншиллу ставилась как “при заданном вычислительном бюджете найти оптимальные N (параметры) и Dtr (токены), минимизирующие лосс предобучения”.
В текущей работе задача иная “при заданном лоссе найти N и Dtr, минимизирующие стоимость компьюта”. Стоимость компьюта зависит от будущего инференса, так что его надо оценить до обучения.
Полученные графики показывают отношение предлагаемых работой FLOPs, параметров и токенов предобучения к значениям оптимальным для Шиншиллы. Это представлено в виде кривых для разных значений лосса и потребностей в инференсе. Когда потребности в инференсе невелики, то Шиншилла оптимальна.
Например, для модели уровня качества Chinchilla-7B при потребности в инференсе 10^11 токенов оптимальнее обучить 6B модель на 1.18x оригинальных данных. Этот выбор приведёт к уменьшению итоговых FLOPs.
Но интереснее конечно не FLOPs уменьшать, а деньги. На инференсе и на обучении загрузка (Model FLOPs Utilization, MFU) железа очень разная, последовательная генерация приводит к особенно низкой загрузке. К тому же на инференсе можно сделать квантизацию и на том же железе более эффективно это считать. А ещё можно и инференс на другом более дешёвом железе делать…
В обновлённую формулу добавляются MFU обучения и инференса, а также цена за FLOPs, получаются другие кривые (подразумевая обучение на A100-80GB, инференс на A100-40GB с квантизацией INT8 и по ценам Lambda Labs). Короче, можно экономить. В некоторых условиях до 50%+.
Тренд на обучение меньших моделей подольше вовсю цветёт и разворачивается!
[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 Шиншиллу (/channel/gonzo_ML/1216) обучали на меньшем датасете в 1.4T токенов. По рецептам Шиншиллы оптимальное обучение для 1B модели было бы на 20B токенов (/channel/gonzo_ML/1223), а тут 3T, почувствуйте разницу! Кажется, это в первый раз для настолько малой модели.
Из других SLM за последнее время были, например, Phi 1 и 1.5 с 1.3B (/channel/gonzo_ML/1871), Phi 2 c 2.7B (/channel/gonzo_ML/2173) или Gemini Nano с 1.8B и 3.2B (/channel/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 правда хуже. С увеличением вычислительного бюджета перформанс продолжает расти, не понял только почему он более шумным становится.
Кажется, работа -- верх открытости. Весь код обучения, промежуточные чекпойнты, все детали обучения доступны.
Респект!
Вирт умер :(
https://twitter.com/Bertrand_Meyer/status/1742613897675178347
[GFlowNets]: Flow Network based Generative Models for Non-Iterative Diverse Candidate Generation
Emmanuel Bengio, Moksh Jain, Maksym Korablyov, Doina Precup, Yoshua Bengio
Статья: https://arxiv.org/abs/2106.04399
Код: https://github.com/GFNOrg/gflownet
Пост: https://yoshuabengio.org/2022/03/05/generative-flow-networks/
Короткое саммари от соавтора: https://folinoid.com/w/gflownet/
Давно хотелось написать про GFlowNets, или Generative Flow Networks, работу в соавторстве Йошуа Бенжио, про которую он крайне тепло отзывается и считает важным новым направлением исследований. По словам Бенжио, среди прочих крутых вещей, работа открывает дорогу к созданию system 2 inductive biases (https://www.microsoft.com/en-us/research/video/gflownets-and-system-2-deep-learning/).
В этом посте в основном про основополагающую работу с NeurIPS 2021. К текущему моменту есть развития, например, “GFlowNet Foundations” (https://arxiv.org/abs/2111.09266), “Multi-Objective GFlowNets” (https://arxiv.org/abs/2210.12765), “A theory of continuous generative flow networks” (https://arxiv.org/abs/2301.12594) и многое другое, особенно в прикладной части с применением к задачам разных областей и особенно для биологии (например, https://arxiv.org/abs/2203.04115).
GFlowNets (GFN) -- генеративные сети, как следует из названия, в которых генеративный процесс представлен транспортной сетью, flow network. Оригинальная работа посвящена генерации молекулярных графов, но в целом GFN годятся для сэмплинга различных комбинаторных объектов.
Цель -- не получить единственную последовательность действий с максимальным reward, а сделать выборку из распределения траекторий, чья вероятность пропорциональна вознаграждению. Или, другими словами, преобразовать заданную функцию вознаграждения в генеративную policy, сэмплирующую с вероятностью пропорциональной вознаграждению. Это может быть полезно в задачах, где много мод и важна часть про exploration (как раз пример из drug discovery). В одной из последующих работ GFN называют diversity-seeking reinforcement learning algorithms.
Подход GFlowNets работает с сетью, в узлах которой находятся состояния, а выходящие из них рёбра соответствуют детерминированным переходам в результате выбранных действий. Поток в этой сети даёт вероятность действия в текущем состоянии. GFlowNet это именно сеть, не дерево -- разные пути могут приводить к одним и тем же состояниям.
MDP (Markov Decision Process) на сети, где все листья являются терминальными состояниями с вознаграждением, представляется в виде транспортной сети, которая описывается направленным ациклическим графом (DAG). Используется эпизодический RL, где вознаграждение получается лишь в конце эпизода, а везде в процессе он равен нулю. У сети один исток и стоки по числу листьев, вытекающий поток равен вознаграждению в листе, входящий поток -- сумма всех выходных. Общий поток через сеть в каждом узле должен удовлетворять условию, что входной поток в узел равен выходному потоку из него. Касательно полиси, вероятность действия a из состояния s, π(a|s), равна отношению потока из состояния s по ребру a, F(s, a), к общему потоку из состояния s, F(s).
Для реальных задач задать сеть явно нереально (например, для молекул может потребоваться 10^16 узлов), поэтому мы аппроксимируем поток через каждый узел нейросетью (например, графовой или трансформером), это аналогично переходу RL → Deep RL. В сеть подаётся описание состояния, на выходе получается набор скаляров, соответствующий следующим состояниям.
Увидел этот пост (alexey.inkin/advice-to-my-younger-self-and-you-after-20-years-in-programming-a3a2ccc7a942" rel="nofollow">https://medium.com/@alexey.inkin/advice-to-my-younger-self-and-you-after-20-years-in-programming-a3a2ccc7a942) у Дениса Афанасьева и поделюсь им тоже. Он как бы не очень про ML, но он достаточно универсальный чтобы быть и про него тоже. К тому же сейчас хорошее время чтобы подвести итоги своего года и выработать планы на будущее. С чем-то в посте можно не соглашаться, это up to you. Я надеюсь он станет для кого-то питательным бульоном и поводом, чтобы порефлексировать самостоятельно. Plans are useless, but planning is indispensable.
Пользуясь случаем также скажу пару слов за IEEE и GDE. Обе темы крайне полезные и я настоятельно их рекомендую.
В IEEE я вступил наверное уже лет 20 назад в основном из-за их публикаций и профессиональных журналов (а также спасибо Макконнеллу http://www.symbol.ru/alphabet/449955.html). Они до сих пор высочайшего качества, начиная с универсальных IEEE Spectrum и Computer. ACM Queue и CACM кстати тоже были ничего, но для меня конкретно IEEE как-то больше зашёл. Оттуда я узнавал многие вещи за 3-5 лет до того как они массово доходили не то что до популярной прессы, а вообще до русскоязычной профессиональной среды.
GDE же это прекрасное комьюнити профессионалов, каждый из которых постоянно делает что-то интересное и у кого можно всегда учиться. Там есть прямо мегакрутые люди. В своё время я стал первым и единственным GDE в категории ML в России, и как-то так и не удалось затянуть в эту тему никого больше. А жаль, я пытался :) Сейчас программа на территории России уже не работает, но если вы на других территориях, то я очень рекомендую. Вступайте в рады Фурье! Тут https://developers.google.com/community/experts
Эксперименты
Авторы валидируют свой подход на больших моделях из семейства OPT (66B, 175B) и Bloom через замеры перплексии на WikiText/C4, и zero-shot бенчмарках из lm-eval-harness. Contextual sparsity в районе 50-60% даже слегка накидывает в качестве, и до 80% не просаживает качестве по сравнению с исходной моделью.
Deja Vu ускоряет генерацию с OPT-175B в 1.8-2x по сравнению с FasterTransformers и 4.8-6x c реализацией трансформера в HuggingFace (сильно неоптимальной) при contextual sparsity 75%
Для Bloom результаты и выводы аналогичные.
Затем авторы смотрят на contextual sparsity с ростом количества одновременно подаваемых последовательностей, и оказывается, что количество каналов/голов с большим значением активаций растет медленнее, чем линейно с размером батча. Причем в первых слоях, активируются одни и те же каналы и головы во всех последовательностях, и различие возникает в более поздних блоках.
Deja Vu можно совместить с другими методами сжатия и ускорения, в частности, квантизацией.
Вывод
С одной стороны логичное и в то же время интересное наблюдение. Интуитивно понятно, что все заложенное знание в foundation модель не требуется для конкретного запроса, но вопрос о том, как эффективно извлекать это знание, не перебирая при этом половину книг в эдакой импровизированной библиотеке. Результаты для OPT выглядят весьма впечатляюще, однако отсутствие подобных экспериментов на более современных и эффективных моделях, пресловутой Llama к примеру, вызывает смутные подозрения. По всей видимости, столь высокая разреженность активаций как-то связана с недообученностью и compute-неоптимальностью моделей. Тем не менее, contextual sparsity - перспективное направление для развития эффективных foundation моделей.
Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time
[Статья] [Код]
Гугл выдаст кучу статей с дежавю в названии:
🎉 Do SSL Models Have Déjà Vu? A Case of Unintended Memorization in Self-supervised Learning.
🎉 DejaVu: Conditional Regenerative Learning to Enhance Dense Prediction
🎉 DEJA VU: Continual Model Generalization For Unseen DomainsDeja-Vu: A Glimpse on Radioactive Soft-Error Consequences on Classical and Quantum Computations
🎉 Déjà vu: A Contextualized Temporal Attention Mechanism for Sequential Recommendation
🎉 Déjà Vu: an empirical evaluation of the memorization properties of ConvNets
Так что авторы немного прогадали с оригинальностью названия)
Перейдем же к сути дела.
Введение
Как известно, нейронные сети перепараметризованы, и имеет место значительная избыточность в весах моделей - значительную долю весов можно отбросить без заметной просадки в качестве. На этом свойстве основаны методы прунинга. Тем не менее, чтобы решать широкий круг задач foundation модель должна обладать значительным количеством параметров, чтобы хранить в себе большой обьем знаний. Потому добиться существенного сжатия и ускорения без просадки в качестве крайне затруднительно.
Однако, для конкретного запроса, будь то последовательность или иной тип входа, требуется лишь малая доля аккумулированного в модель знания. Чтобы взять интеграл от функции не требуется быть египтологом или знать всех представителей рода соколиных.
Просадка в качестве модели от такой индуцированной разреженности минимальная. Изредка бывает незначительное уменьшение, но бывает и увеличение качества, что само по себе интересно (если это не статистическая флуктуация).
PowerInfer совместим с разными семействами LLM, включая OPT (7B-175B), LLaMA (7B-70B), и Falcon40B. На очереди Mistral-7B.
Я прям уверен, что от этого и других подобных решений разойдётся целая ветвь новых работ и продвинутых движков инференса. Самой Нвидии это скорее всего не очень интересно (надо продавать дорогие A100/H100), но народное опенсорс движение создаст свою вселенную решений для более дешёвого железа. И здесь должен возникнуть не один стартап.
Резюмируя, метод вычислительно более тяжёлый в разы (а с LLM для оценки ответов тем более), в данный момент радикального прорыва относительно других методов не показал, но как proof-of-concept или даже скорее развитие активно прорабатываемой везде темы полезен. Больше разнообразия -- это хорошо. Интересно, насколько другой результат был бы на больших топовых моделях, а не на старой первой маленькой Ламе.
Читать полностью…Лентой принесло
https://www.scientificamerican.com/article/tech-billionaires-need-to-stop-trying-to-make-the-science-fiction-they-grew-up-on-real/
Проблема, что этот метод сложно применять с blackbox моделями типа OpenAI, но с новыми параметрами про logprobs и top_logprobs (https://platform.openai.com/docs/api-reference/chat/create#chat-create-logprobs) как-то можно к этому приблизиться. Правда лицензия (https://openai.com/policies/terms-of-use) вроде как это запрещает (“Use Output to develop models that compete with OpenAI”), но тут я не очень понимаю, как на сгенерённых GPT-4 датасетах обучают другие модели, там почему можно?
Читать полностью…В общении есть явная очерёдность, киты отвечают с разницей в 2 секунды, коммуникация может вестись на расстоянии от метров до километров. У индивидов внутри семьи есть диалект с общими по крайней мере 10 кодами (но есть и индивидуальная вариативность). Детёнышам нужно по крайней мере два года, чтобы начать производить различимые коды.
Для классических методов supervised ML получение размеченных корпусов является довольно дорогой и трудной задачей (хотя какие-то успешные результаты применения обучения с учителем есть). Перспективным видится вариант использования различных современных методов self-supervised representation learning. Но с ними тоже проблема в том, что для нормального SSL нужны большие корпуса, хоть и неразмеченные. Для примера, датасет Dominica Sperm Whale Project (DSWP) содержит лишь <10^4 код, хотя собирается с 2005 года. То есть до размеров датасетов для GPT-3 с 10^11 токенов (хоть и сложно сопоставить токены и коды) ещё далеко. CETI намерены собрать датасет порядка 10^9 (и это сравнимо с датасетом для BERT’а). Оценка базируется на почти непрерывном мониторинге 50-400 китов и в год ожидается от 400M до 4B записанных щелчков.
Техническая часть проекта состоит из нескольких разделов.
Data acquisition. Данные надо собирать наименее инвазивно, и куча современных технологий может помочь: дроны воздушные и морские (типа искусственных рыб), метки на китах, сети буйков и плавающие фиговины (floaters).
Data processing. Нужно хранение и умная предобработка этих данных (детекция щелчков, предварительная аннотация, синхронизация различных типов сигналов). Результирующий датасет будет своеобразной “социальной сетью китов”.
Decoding and encoding, построение модели коммуникации китов, которая состоит из перечисленных ранее блоков.
Фонетика и фонология: много открытых вопросов, например, определяются ли коды по абсолютным ICI, несут ли спектральные признаки код информацию, каковы distributional restrictions, и так далее.
Морфология и синтаксис: надо понять грамматику коммуникации, каковы правила построения кодов, есть ли рекурсия (пока ни в какой коммуникации животных она вроде не найдена). И здесь, и в фонетике очень нужны большие датасеты.
Семантика: надо понять смысл всех этих вокализаций, для этого нужно сохранить весь важный контекст, чтобы получить grounding найденных морфем.
Дискурс и социальная коммуникация: надо понять протоколы общения, когда и кто говорит. На этом можно будет строить предсказательные модели разговора (а каком-то смысле аналоги LLM или чатботов).
Где-то рядом есть аспекты избыточности коммуникации и защиты от ошибок, эти механизмы тоже надо понять. Отдельный большой вопрос это language acquisition, как детёныши схватывают этот язык, здесь может быть много ценных закономерностей: в каком порядке выучиваются коды, каковы самые базовые структурные блоки и их функции, и так далее. Для этого тоже нужно больше данных.
Ценно будет провести playback-based validation, здесь много своих сложностей. Знаем ли мы что воспроизводить, можем ли адекватно реплицировать в реальной среде (чтобы не с лодки, а с автономного девайса), распознаем ли ответ?
В общем большой, сложный и многомерный проект, с большой инженерной и инфраструктурной частями, но безумно интересный и уверен очень полезный. Поймём китов, поймём и инопланетян? Или сначала таки осьминогов надо будет понять?
Поехали
https://openai.com/blog/introducing-the-gpt-store
Прикольная статья из серии "на почитать".
Perspectives on the State and Future of Deep Learning - 2023
Micah Goldblum, Anima Anandkumar, Richard Baraniuk, Tom Goldstein, Kyunghyun Cho, Zachary C Lipton, Melanie Mitchell, Preetum Nakkiran, Max Welling, Andrew Gordon Wilson
https://arxiv.org/abs/2312.09323
"The goal of this series is to chronicle opinions and issues in the field of machine learning as they stand today and as they change over time. The plan is to host this survey periodically until the AI singularity paperclip-frenzy-driven doomsday, keeping an updated list of topical questions and interviewing new community members for each edition. In this issue, we probed people’s opinions on interpretable AI, the value of benchmarking in modern NLP, the state of progress towards understanding deep learning, and the future of academia."
Пересказывать тут особо нечего, читайте и найдёте что-то для себя. Мне вот ответы Andrew Gordon Wilson понравились, достаточно глубокие и с кучей ссылок. Узнал про его прикольный проект "CoLA: Exploiting Compositional Structure for Automatic and Efficient Numerical Linear Algebra" (https://arxiv.org/abs/2309.03060, https://github.com/wilson-labs/cola).
Phi-2 has the MIT License finally!
https://huggingface.co/microsoft/phi-2
Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws
Nikhil Sardana, Jonathan Frankle
Статья:https://arxiv.org/abs/2401.00448
Продолжаем тему про оптимальные режимы обучения LLM с учётом инференса и выход за границы рецептов Шиншиллы.
Инференс -- основной этап жизненного цикла большинства моделей. В области software engineering это полностью аналогично этапу эксплуатации программы, именно там она проживает большую часть своей жизни. Разработка и обучение -- это так, короткий момент детства. Особенно это важно для открытых моделей, да и для закрытых тоже, когда они деплоятся на кучу устройств.
Суперзакрытая GPT-3 в 2021 генерила 4.5B слов в день (https://openai.com/blog/gpt-3-apps), а у Character.ai в конце 2022 эта цифра была 1B (https://blog.character.ai/introducing-character/). После запуска ChatGPT и с новыми улучшенными GPT-3.5 и 4 Turbo цифры наверняка значительно выше. Плюс если перевести в токены, то это ещё раза в полтора надо умножить для английского (который, наверное, основной язык, для других эта цифра заметно выше).
Вообще, если предположить, что популярная модель генерит 10B токенов в день (допустим, что токены промпта сюда включены), то при обучении на 3T токенов (как TinyLlama, /channel/gonzo_ML/2251) цифры обработанных токенов сравняются через 300 дней. При нынешней скорости прогресса, за год модель может успеть и задепрекейтиться… Так, GPT-4 вышла в марте 2023 (/channel/gonzo_ML/1383), а более новая GPT-4 Turbo в ноябре 2023 (/channel/gonzo_ML/2055), и она в целом лучше и, что ещё более важно, сильно дешевле старой модели. Оставляем за скобками, что обучены они были ещё сильно раньше, и что для обучения новой модели может использоваться старая.
В общем при всей сложности экономики процесса, инференс важен, и его надо учитывать наравне с обучением.
Первый большой прорыв в поиске оптимальных режимов (с точки зрения вычислительного бюджета, размера модели и количества токенов в обучении) произошёл в работе про Chinchilla (/channel/gonzo_ML/1216). После той работы многие начали использовать найденные в ней рецепты, где количество токенов должно скейлиться в той же пропорции, что и число параметров модели. Некоторые модели при этом уже выходили сильно за этот рецепт, те же LLaMa и Llama 2. На обучении различных моделей было видно, что графики лосса и качества решения downstream задач не выходят на плато, можно продолжать и дальше.
В этом месте возникает логичный trade-off, 1) обучить большую модель по [уже] классическим рецептам Шиншиллы, или 2) обучить модель поменьше размером, но на большем числе токенов. Если итоговое качество одинаковое, то у второго варианта есть выигрыш в инференсе -- сэкономим кучу ресурсов, а может также и откроем новые рынки, если модель можно гонять на устройствах меньшей мощности, куда большая модель не лезет.
Очень прав был Ричард Хэмминг, когда он рассматривал эволюцию железа, софта и приложений в контексте экономики (если ещё не читали его “The Art of Doing Science and Engineering”, то это must read, https://press.stripe.com/the-art-of-doing-science-and-engineering):
“Computers have opened the door much more generally to the mass production of a variable product, regardless of what it is: numbers, words, word processing, making furniture, weaving, or what have you. They enable us to deal with variety without excessive standardization, and hence we can evolve more rapidly to a desired future!”
Эта цитата, мне кажется, тоже очень в тему того, что сейчас происходит вокруг AI, Foundation Models и LLM в частности.
Возвращаясь к статье, авторы обновляют scaling laws Шиншиллы, чтобы учесть в них массовый инференс и выступают за более долгое обучение меньших моделей. В формулировке они исходят из того, что количество запросов на инференс не зависит от размера модели (при условии одинакового качества).
Приготовьтесь к запуску 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."
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), в которой ими делают файнтюнинг.
Я пока не понял, для чего именно это нужно (/channel/gonzo_ML?boost), но если у вас есть идеи как этим улучшить канал, то присылайте ваши идеи вместе с бустами.
Всех с Наступающим Новым годом! Желаю всем мира, счастья и здоровья!
“Human Compatible”, Stuart Russell
https://people.eecs.berkeley.edu/~russell/hc.html
#2
Прочитал Рассела, в прошлый раз (/channel/gonzo_ML/1516) рассказывал про первую часть книги, в этот раз напишу про две другие.
Вторая часть посвящена проблемам и опасностям ИИ. Глава про злонамеренное использование, глава про суперинтеллект и отдельная классная глава с разбором типичных возражений и убеждений из дебатов об опасностях ИИ. Хорошая подборка всего, стоит прочитать, если хотите взвешенный и широкий обзор про разного рода риски.
Последняя третья часть содержит основную идею и посвящена подходу к beneficial AI, на который рассчитывает Расселл.
Его идея в том, что классический ML/AI часто смотрит на задачу как на построение машины, оптимизирующей некую objective. С этим подходом есть фундаментальные проблемы, потому что objective очень сложно задать, легко что-то не учесть, она может измениться и так далее. Ну все тут наверное когда-нибудь общались с джином (или джуном) или писали ТЗ, догадываются про сложности 🙂 Когда машина отпущена в свободное плавание, исправить или изменить objective может быть уже нереально. Винер в 1960-е тоже про это писал, см. “Some Moral and Technical Consequences of Automation” (https://www.cs.umd.edu/users/gasarch/BLOGPAPERS/moral.pdf).
Расселл предлагает зайти с другой стороны. 1) Не надо закладывать в машину никаких objectives кроме как “максимизировать выполнение человеческих предпочтений (preferences)”. 2) Машина при этом изначально uncertain относительно этих предпочтений и 3) основным источником информации о предпочтениях должно быть человеческое поведение.
С точки зрения п.1 машина альтруистична, у неё нет никакой ценности в собственном существовании (я так понимаю тут мы не касаемся темы про машины, имеющие сознание, с этим имхо будет всё сложнее и не так). С точки зрения п.2 машина скромна, при непонятностях ожидает помощи и подсказки от человека. С точки зрения п.3 она учится предсказывать человеческие предпочтения, занимается Inverse Reinforcement Learning (IRL, https://thegradient.pub/learning-from-humans-what-is-inverse-reinforcement-learning/) -- пытается понять rewards по поведению. IRL -- тема, совсем не чуждая Расселлу (оказывается ещё и Ыну, https://ai.stanford.edu/~ang/papers/icml00-irl.pdf) и вообще популярная в его родном Беркли (https://people.eecs.berkeley.edu/~pabbeel/cs287-fa12/slides/inverseRL.pdf), но не только там, конечно.
Расселл признаёт, что есть много сложностей: люди разные, их много, они хорошие и плохие, глупые и эмоциональные, ещё и со временем всё может меняться. Совсем готового рецепта у автора нет, но он рассчитывает на лучшее. Расселл ожидает регуляцию, думает что её внедрение будет довольно болезненным процессом, но надеется, что для преодоления сопротивления индустрии не потребуется аналог Чернобыля. Misuse остаётся большой проблемой, от которой мы никуда не денемся (это уже видно на примере киберсека).
Хорошая книжка в общем, рекомендую. Особенно тем, кто будет кричать, что проблем с ИИ быть не может, или кто утверждает, что есть только думеры пугающие всех нереальным сценарием со скрепками.
Метод
Ускорить время работы сети без просадки в качестве можно не используя часть голов в attention или каналов в feedforward слоях.
Первая часть работы посвящена анализу внутренних представлений внутри сети.
Авторы делают два прямых прохода: на первом определяют каналы и головы с наибольшими значениями активаций, и на втором проходе используют только долю параметров, соответствующую самым большим активациям. Оказывается, что таким образом можно пропустить до 80% голов в Attention и до 95% в MLP слоях без существенного изменения выхода модели. Кроме того, оказывается что в большинстве голов attention размазан равномерно по токенам, и эти головы не выполняют никакой полезной работы.
При определении важных/неважных для конкретного входа параметров описанным выше образом приходится делать один проход с использованием всех параметров, потому толку от него как от козла молока. Можно ли как-то заранее определить нужные каналы?
Авторы рассматриваемой статьи делают следующее: берут обученную языковую модель и поверх нее обучают слои предсказывать, насколько релевантен вход данному каналу ffn / голове трансформера. На инференсе задается доля весов, которую мы хотим использовать, и берутся только измерения с самым высоким предсказанным скором. Выбор нулевых весов зависит от входа (то есть контекста) - потому sparsity носит прилагательное contextual.
Предсказывать важность канала/головы на основе активаций текущего слоя оказывается технически неэффективно, так как определение используемых для данного входа параметров и прогонка через блок должны осуществляться последовательно, что снижает утилизацию железа. Потому предлагается использовать активации с прошлого блока для выбора. Благодаря наличию residual connections активации слабо меняются от блока к блоку, потому активации прошлого блока служат хорошим приближением активаций в текущем блоке, и предиктор можно прогонять параллельно с attention и mlp блоком.
Ещё релевантный обзор предшествующей работы на эту же тему
Читать полностью…PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU
Yixin Song, Zeyu Mi, Haotong Xie, Haibo Chen
Статья: https://arxiv.org/abs/2312.12456
Код: https://github.com/SJTU-IPADS/PowerInfer
Очень интересный инженерный проект по оптимизации инференса LLM от Института параллельных и распределённых систем из Шанхая, чтобы запускать большие LLMки на GPU консьюмерского уровня. Авторы опубликовали свой гибридный GPU-CPU движок для инференса под названием PowerInfer, который работает быстрее llama.cpp в 11+ раз на RTX 4090 (24G) с моделью Falcon(ReLU)-40B-FP16, а также демонстрирует скорость генерации токенов всего на 18% ниже, чем в 10 раз более дорогая A100.
Работа основана на следующих наблюдениях. Первое: активации нейронов в LLM демонстрируют локальность (locality) и распределены по степенному закону. Есть небольшое количество hot neurons, которые активируются часто на разных входных данных, и cold neurons, активирующиеся редко на конкретных входах, и которых большинство. Второе ценное наблюдение в том, что пересылать нужные веса с CPU на GPU и считать результат там может быть медленнее, чем посчитать их на месте на CPU, особенно если нужна не полная матрица весов, а её подмножество (которое может быть неплохо посчитано через современные векторные расширения в системе команд процессоров). В итоге горячие нейроны (строки/столбцы соответствующих матриц весов) отправляются на GPU для быстрого доступа, а холодные считаются на CPU по мере надобности. Это существенно понижает требования к памяти GPU и уменьшает пересылку данных через шину PCIe туда-сюда.
Технически PowerInfer состоит из двух частей: движка инференса и оффлайн части.
Оффлайн часть включает профайлер для обнаружения горячих нейронов и солвер (на основе целочисленного линейного программирования, Integer Linear Programming, ILP) для оценки влияния нейрона на результат инференса и создания полиси аллокации нейронов. Это 400 строк на Питоне + HuggingFace Transformers. Горячие/холодные нейроны определяются на офлайн шаге, далее во время инференса они будут загружены на GPU/CPU соответственно.
Движок инференса сделан на базе llama.cpp с добавленными 4200 строк кода на C++/CUDA. Движок запускает на CPU отдельные треды для GPU и CPU экзекьюторов, которые управляют этими конкурентными вычислениями, а слияние результата происходит на GPU (потому что там сидят более часто активирующиеся нейроны). PowerInfer использует адаптивные предикторы для предсказания, какие нейроны будут активны при текущих входных данных, и только эти нейроны (из уже разделённых на горячие и холодные) и вычисляются. То есть нейрон мог быть определён как горячий на офлайн шаге, загружен на GPU, но всё равно не активирован, потому что предиктор решил, что его вычислять не нужно. Можно, наверное, это рассматривать как adaptive sparsity.
Для каждого трансформерного слоя работают два предиктора, один для MHSA, другой для MLP. Живут они тоже в памяти GPU, поэтому есть конкуренция за этот ресурс и предикторы важно сделать минимально допустимого размера. Предиктор -- это MLP с одним скрытым слоем. В работе есть хитрая итеративная процедура для изменения размера скрытого слоя предиктора в зависимости от асимметрии (skewness) распределения активаций.
Так понимаю, что предикторы и для hot/cold и для онлайн шага обучены независимо на типовых корпусах типа C4 или Википедии, и код их обучения пока не опубликован. Но вроде как планируется.
Также реализованы свои neuron-aware sparse operators, которые более заточены на эту задачу, чем более универсальные из cuSPARSE, Sputnik (https://github.com/google-research/sputnik), SparTA (https://github.com/microsoft/SparTA) или FlashLLM (https://github.com/AlibabaResearch/flash-llm). А JIT компилятор PIT (https://arxiv.org/abs/2301.10936) не поддерживает GPU-CPU гибридизацию.
В результате хорошие ускорения до десятка раз относительно llama.cpp на разных моделях.
PathFinder: Guided Search over Multi-Step Reasoning Paths
Olga Golovneva, Sean O'Brien, Ramakanth Pasunuru, Tianlu Wang, Luke Zettlemoyer, Maryam Fazel-Zarandi, Asli Celikyilmaz
Статья: https://arxiv.org/abs/2312.05180
Активно развивается тема многоходовых генераций через LLM. Здесь уже были Tree-of-Thought (/channel/gonzo_ML/1885), есть Graph-of-Thoughts (https://arxiv.org/abs/2308.09687) и даже Everything-of-Thought (https://arxiv.org/abs/2311.04254) с применением MCTS. Взбудораживший общественность Q* от OpenAI (https://www.technologyreview.com/2023/11/27/1083886/unpacking-the-hype-around-openais-rumored-new-q-model/) предположительно тоже связан с многоходовым планированием в LLM. Если посмотреть глобально, то оно всё ложится в концепцию LLM Programs (/channel/gonzo_ML/1584).
FAIR предложили свой подход к многоходовой генерации под названием PathFinder, метод декодирования для генерации и уточнения reasoning chains. Подход состоит из двух этапов: генерации кандидатов (candidate generation) и их отборе (candidate selection). Для генерации используется метод на деревьях, для отбора специальные функции близости внутри пула кандидатов.
На этапе генерации ветвление происходит на уровне шагов рассуждения, не генерации отдельных токенов. То есть каждый узел дерева -- это шаг рассуждения. На ветвление влияют параметры сэмплинга (типа top-k, top-p, температуры -- для неё реализован отжиг, уменьшение с коэффициентом). Делается ветвление из каждого неудалённого (non-pruned) листа с заданным коэффициентом ветвления и продолжается пока не достигли точки останова либо не превысили заданную максимальную глубину. Ветви удаляются на основе скора (нормализованная на длину сумма logprobs токенов).
На генерацию есть ограничения. Так, модель перегенерирует шаг, если сработала одна из двух проверок: 1) шаг по косинусной близости похож на один из предыдущих; 2) шаг противоречит предыдущему контексту (за это отвечает специальная entailment model, классифицирующая шаг по трём классам: entailment, neutral, contradiction). Ветка дерева обрезается, если за две попытки не удалось сгенерить валидный шаг.
Есть также размер буфера b, ограничивающий количество гипотез, хранимых для каждого вопроса. Финальная гипотеза выбирается из пула так, чтобы она максимизировала сумму функций близости (работал вариант с количеством общих n-грамм) со всеми другими кандидатами в пуле, это интуитивно похоже на голосование или self-consistency (/channel/gonzo_ML/1885).
Для тестов используется маленькая LLAMA-7B, проверяют на GSM8K, StrategyQA, CSQA, то есть про арифметический и commonsense reasoning. Для отбора кандидатов пробовали три разных метода: триграммы, и FLAN-T5-XL или text-davinci-003 в качестве verifier model.
Бейзлайны разные: GPT-6.7B, та же LLAMA-7B, MINERVA-8B (ожидаемо рулит на GSM8K) и FLAN-T5-XL 3B (сильно instruction finetuned). В бейзлайнах дефолты в основном на основе greedy decoding + CoT prompts.
Не сказать что PathFinder прямо радикально всех бьёт. На первых двух бенчмарках LLAMA-7B с self consistency выступает прям очень хорошо. Новый подход заметно улучшает только на третьем бенчмарке. Flan силён, но он файнтюнился на части из этих датасетов, так что на цифры смотреть бесполезно.
Отдельно проверили, насколько добавляют качества продвинутые методы оценки (scorers и verifiers через LLM). text-davinci-003 всех бьёт, но до upper bound (с оракулом) ей далеко. В этой части явно есть что улучшать.
Фактор ветвления в сочетании с размером буфера и функцией оценки кандидатов важен. При большом ветвлении функции оценки могут быть сильно подвержены влиянию шума. Для каждого размера буфера свой оптимум. У самого размера буфера тоже есть лимит, после которого качество не улучшается. Также интересно, что для методов на деревьях важно разнообразие, PathFinder начинает перформить лучше end-to-end метода только начиная с 8-кратного ветвления.
An In-depth Look at Gemini's Language Abilities
Статья: https://arxiv.org/abs/2312.11444
Код: https://github.com/neulab/gemini-benchmark
Нанообзор.
CMU и некий BerriAI опубликовали своё сравнение Gemini Pro с GPT-3.5, новой GPT-4 Turbo и Mixtral. В оригинальной статье Гугла как раз самых новых интересных моделей типа GPT-4 Turbo не было. Ещё конечно было бы любопытно с Claude 2.1 сравнить.
В целом от Pro особых ожиданий не было, она и по родному сравнению была примерно сравнима с GPT-3.5 (в текущем сравнении она оказалась похуже). Самая интересная модель Ultra, но она пока недоступна. Интересно, конечно, будет, если OpenAI успеет GPT-4.5 до конца года выкатить.
Ниже одна итоговая картинка со сравнением. За деталями самих сравнений велкам в статью.
For Distillation, Tokens Are Not All You Need
Mrigank Raman, Pranav Mani, Davis Liang, Zachary C. Lipton
Статья: https://openreview.net/pdf?id=2fc5GOPYip
Новости дистилляции. Статья с воркшопа Instruction Tuning and Instruction Following на NeurIPS 2023.
TL;DR Авторы предложили метод дистилляции LLM под названием SLIM, использующий значения топ 5% логитов для дистилляции на каждом шаге декодирования + динамическое взвешивание KL/CE лоссов. Результат лучше классической дистилляции, SFT и MiniLLM. Метод скейлится до учителей размером ~70B.
Если поглубже, то современные LLM доросли до огромных размеров и часто используются для аннотирования и генерации инструкций для файнтюнинга малых моделей. Классика файнтюнинга при этом -- supervised fine-tuning (SFT), дообучение на новых (сгенерированных) текстах как на hard labels. Мы знаем, что этот метод несёт сильно меньше информации о распределении, чем мог бы (/channel/gonzo_ML/1911).
Дистилляция уже используется для LLM (и многие маленькие LLM получаются из больших, та же Gemini вроде как) и с ней есть сложности. Например, маленькая модель может быть недостаточно выразительной, чтобы покрыть все моды распределения учителя.
Недавний метод MiniLLM (https://arxiv.org/abs/2306.08543) заменяет forward Kullback-Leibler divergence (KLD) на reverse KLD, чтобы предотвратить переоценку студентом низковероятностных регионов распределения учителя. Там для обучения использовался RL, что добавляло сложности. Текущая работа всё упрощает и улучшает, подход назвали SLIM (Sparse Logit Infused Modeling).
Идея проста. Давайте по нашему датасету для обучения через модель-учителя создадим датасет логитов (выходы нейронов без применения функции активации). Для каждого токена в последовательности получаем соответственно V (размер словаря) значений, это будут soft targets. Проблема с таким подходом, что это требует дофига места. Для уменьшения требований предлагается взять только 5% максимальных логитов для каждого токена, остальные считать нулями, так получаются разреженные логиты.
Дальше запускаем процедуру дистилляции (для тех, кто забыл как это работает, можно почитать тут /channel/gonzo_ML/118), где в качестве целей берутся soft targets и лосс, являющийся взвешенной суммой обычного кросс-энтропийного лосса (CE) и традиционного KL лосса. Вес KD лоссу даётся зависящий от соотношения логита учителя и студента, таким образом он получается адаптивным и у KL компоненты больше вклад, когда у учителя больше уверенность в предсказании, чем у студента.
Подход проверили на задачах следования инструкциям. Оценивали по Rouge-L и через фидбек от GPT-4. Сравнивались с SFT на hard labels и MiniLLM, для обучения использовали 7B модели LLaMA, LLaMA 2, MPT, учитель был 13-30B. SLIM даёт результат лучше бейзлайнов. SFT вообще хуже всех.
Затем проверили на downstream задачах: ARC, Hellaswag, MMLU, TruthfulQA. Здесь сравнивались с SFT на LLaMA 2 70B в качестве учителя и Llama2-7B в качестве студента. Тоже лучше.
Также проверили генерацию данных для предобучения. Взяли Pythia-6.9B и сгенерили ей датасет текстов + 5% логитов. Затем обучили случайно инициализированную Pythia-160M на подвыборках датасета разного размера. По графику перплексии показали, что SLIM более sample efficient, чем SFT и обычная дистилляция. Я тут не до конца понимаю, что именно они всё-таки под обычной дистилляцией подразумевают, более классический KL лосс чтоли и без топ 5%?
Anyway, просто и эффективно. Метод вроде не сильно отличается от классической дистилляции, не назвал бы его радикально новым, по мне так скорее итеративное улучшение. Интересно, как сами OpenAI, Гугл и остальные внутри себя модели дистиллируют. Есть ли большая разница.
Toward understanding the communication in sperm whales
Jacob Andreas, Gašper Beguš, Michael M. Bronstein, Roee Diamant, Denley Delaney, Shane Gero, Shafi Goldwasser, David F. Gruber, Sarah de Haas, Peter Malkin, Nikolay Pavlov, Roger Payne, Giovanni Petri, Daniela Rus, Pratyusha Sharma, Dan Tchernov, Pernille Tønnesen, Antonio Torralba, Daniel Vogt, Robert J. Wood
Статья: https://www.sciencedirect.com/science/article/pii/S2589004222006642
Сайт: https://www.projectceti.org/
Познакомился тут с Томом Мастиллом, автором книги “How to speak whale” (https://www.tommustill.com/how-to-speak-whale), узнал от него про проект CETI, Cetacean Translation Initiative (https://www.projectceti.org/), я его раньше как-то пропустил. Очень зачётный проект! Название, видимо, отсылка к SETI. Цель проекта -- понять коммуникацию кашалотов. После просмотра Аватара 2 как-то особенно хорошо легло 🙂
У проекта есть программная статья от середины прошлого года (июнь 2022) с родмэпом про то, как участники хотят добиться понимания китовой коммуникации (спойлер: с помощью ML и роботов!). Эта работа может стать шаблоном для понимания других существ, потому что киты -- достаточно хороший модельный организм с развитыми нейроанатомическими признаками, высокими когнитивными способностями, социальной структурой и дискретным кодированием на основе щелчков (clicks).
Для понимания языкоподобной коммуникации надо понять несколько вещей.
1) Каковы артикуляторные и перцептивные строительные блоки, которые можно надёжно производить и распознавать? Это аналог фонетики и фонологии.
2) Каковы правила композиции этих примитивов? Это аналог морфологии и синтаксиса.
3) Каковы правила интерпретации и присвоения смысла этим блокам? Аналог семантики.
4) Может быть также важно влияние контекста на смысл, это прагматика.
В идеале хочется иметь универсальный автоматизированный data-driven toolkit, который можно применять к нечеловеческой коммуникации. Пока его нет.
Применение ML очень сильно упирается в отсутствие больших датасетов для этих задач, и вопросы сбора данных (Record), а также их процессинга (Process), например, аннотирование с добавлением ID кита, составляют отдельную большую часть проекта. Другая часть -- декодирование средствами ML и создание коммуникационной модели китов (Decode). Финальная важная часть, Encode & Playback подразумевает интерактивное взаимодействие с китами и уточнение китовой языковой модели.
Китов изучать сложно, по сравнению с земными животными сильно другая экология и среда. Так, до 1957 года вообще не знали, что кашалоты умеют производить звуки, и только в 1970-х впервые поняли, что они используют их для коммуникации. Киты путешествуют на тысячи километров, живут вероятно более ста лет, причём по сути в трёхмерной среде, часто стабильными социальными группами, подолгу заботясь о детёнышах. Социальное обучение для них вероятно важнее индивидуального или генетически обусловленного поведения. Большая часть их коммуникации, видимо, одномодальная, через акустику. В зоне, куда проникает свет, также важно зрение.
Биоакустическая система кашалота эволюционировала как сенсорный орган, используемый для эхолокации и поиска добычи. Производимые китом щелчки по структуре состоят из нескольких импульсов с мощным первым импульсом и последующими с затухающей амплитудой (получающимися благодаря реверберации начального импульса в спермацетовом органе в носу кита -- кажется, это похоже на основной тон и форманты в человеческой речи, но с антропоцентризмом надо, конечно, поосторожнее).
Кроме эхолокации, этот же орган используется и для коммуникации, она состоит из коротких пакетов щелчков (<2 секунд) с интервалами (Inter-click intervals, ICI) и выделяемыми паттернами, которые называются кодами (codas). Кода состоит из 2-40 всенаправленных кликов. У разных групп китов свои диалекты, обычно у клана есть по крайней мере 20 разных код. Похоже, что в них содержится богатая информация об identity её источника, но в целом коммуникативные функции конкретных код остаются загадкой.