grokaem_seby | Unsorted

Telegram-канал grokaem_seby - grokaem себя

2301

A bunch of things that I encounter during my journey as NLP/Audio developer

Subscribe to a channel

grokaem себя

#grokaem_nlp

Mixture of Depths (MoD)
paper

Уже в парочке каналов написали про новую статью, го и мы пройдемся.

🪀basic idea behind - нечего считать attention на всех слоях на всех токенах, если можно не считать🪀MoD - это как MOE, только используем не mutliple experts, а одного, которого можем скипнуть (skip connection)!

🪀pipeline:
На каждом слое self-attention выбираем k токенов для обновления. Эмбеддинги только этих токенов будут участвовать в подсчете и обновляться, так как это self-attention, внимание для обновления других эмбеддингов будет также только от этих k.

Этот подход относится к conditional computation - использовать compute только когда надо. Иначе можно делать early exiting или использовать адаптеры, чтобы находить skip блоки.

🪀Что нужно от нас:
- выставить capacity - количество токенов для topk
- делать causal lm - выбор topk это non casual операция, почему? Потому что используются все токены. Одно из решений для router - штуки, которая и выбирает токены - базово заменить softmax на sigmoid. А именно - мы добавляем либо auxiliary задачу, либо auxiliary loss, который будет пытаться выучиться сам на нужную подзадачу. Для нас эта задача - понять, что токен должен быть в top k без мам пап и других токенов, то есть через сигмойду. Хорошее объяснение по таймкоду.

🪀Важные штуки:
- граф подсчета не динамический, то есть мы заранее выставили k - worst case scenario
- в gradient path подключаются веса router, как раз те, по которым мы выбрали k токенов (p. 7)
- лучше сработал вариант вставки MOD каждые два слоя с доступом только к 12.5% токенов, то есть пред слой видел все

🪀Глоссарий:
- FLOP
- floating point operations per second. FLOP будет уменьшаться квадратично, если T - исходное кол-о, attention FLOP T'2, возьмем половину токенов для обновления T/2, attention будет (T/2)'2 или 0.25 FLOP intense
- Iso-FLOP - количество компьюта для подсчета в FLOP, чтобы натренировать модель

Круто, когда isoFLOP остается таким же, но мы при этом увеличиваем кол-о параметров. Это как раз наш кейс.

🪀Что с этим всем можно делать дальше?
Ну тут понеслась душа в рай, и long term memory tokens можем сделать, и какие-то только как keys использовать, и вместо identity function придумать разные под каждый кейс.

——
Ну и мы тут не просто так собрались, представим, что вы на собесе и сказали, что недавно прочитали эту статью и вам в ответку прилетает вопрос: почему не используют top p? Ваши действия в комментариях.

Читать полностью…

grokaem себя

Март был сложным месяцем, что было сохранено у меня в закладках? Многое пропустила, пишите в комментах что))

МАРТ 2024

🎏NLP🎏
- вышла моделька T5 для русского, окно в 512, но summary Big мне понравилось
- интересный блок про модель Based аля замену transformer
- пара советов для улучшения rag
- статья от Яндекса о том, как они summary делали. Пожалуй, из всего, что делает Яндекс - эта штука меня поразила больше всех, так как на хакатоне делали похожую штуку. И тут самая главная вещь (барабанная дробь) - размеченные данные, что как обычно выигрыш. Много интересных трюков и инвайтов.
- кофаундер hugging face выложил длинный и интересный блок по LLM
- от нетфликса прилетела статья почему cosine similarity плох

🎏Speech🎏
- вышла voice engine - генерим текст по семплу аудио, весов нет
- громко по всем каналам прогремела suno ai, я вот в чатике better data community написала об этом, хайпа не было, сидите в чатиках, похайпуем. Уже пошли посты про промтинг, а мне интересно на каких промтах они вообще обучались
- вышла voice craft - с ней мы можем редачить речь и делать zero shot tts

🎏Рандомные🎏
- канал Рената Алимбекова, много про собесы, решения задачек и тд, клево для начинающих
- хороший cheet sheet вспомнить базу и повесить на стенку

Читать полностью…

grokaem себя

Попрыгав по статье о EEG, эффектом википедии я дошла до Towards Voice Reconstruction from EEG during Imagined Speech.

NeuroTalk - неинвазивно читаем сигналы мозга и переводим сразу в речь, даже не в текст!!! (да это же круто!👍🏻) Система не End-to-end:

1. Generator
2. Discriminator
3. Vocoder - HiFi-GAN
4. ASR - HuBERT

Соответственно и лоссов у нас 3: reconstruction, GAN, CTC.

_____
Теперь кратко пайплайн:
Задача - сигнал EEG сделать аудио сигналом реальной речи. EEG -> mel spec -> wav. На этапе с mel spec мы понимаем, что это какой-то генератор.
- А какой именно должна быть эта mel spec?
- Такой же как и у реальной речи.
- Что это?
- GAN. С части генератора берем reconstructed mel spec, считаем reconstruction loss в сравнении с mel spec, где человек говорит. Прокидываем эти две спектрограмки в discriminator и просим сказать, где сгенерированная melspec, а где та, где человек говорит (spoken EEG/melspec). Снова считаем лосс уже GAN. С reconstruct melspec делаем vocoder, получаем wav, ее в asr -> получаем текст и сравниваем с текстом, который представлял человек.

Теперь, когда вы прочитали и закрыли скорее всего пост - вопросы:

0️⃣ Как так нужно пройтись по EEG сигналу, чтобы его восстановить?
Embedding space становится из 5000 time * 64 channels -> 104-feature * 16-time с помощью CSP (common spatial pattern). Про них тут кратко "These eigenvectors (spatial filters) project the EEG signals into a new space where the classes are optimally separated in terms of variance. In other words, the resulting spatial filters are basically a set of weights that can be applied to the EEG data to obtain a new set of spatially filtered data that emphasizes the differences between the two classes." По сути переносим обученными CSP filters наши значения EEG в новый space при этом пытаясь их разделить.

1️⃣Генератор с attention?
Попридержи коней, Conv и GRU. С мотивацией на time axis и sequence features используется GRU на выходы по Conv1d. Потом делают upscale с transposed Conv (transposed conv для upscale reminder) слоями.

2️⃣Мы учили на мелспектрограммах речи, которая говорится, а подавали eeg как люди представляют речь. Ок ли это?
Ну камон, а как ты будешь подавать спектрограмму, если человек молчит? Делаем Domain Adaptation, он на самом деле клевый, потому что молчание - золото, нет шума от артикуляции и вибраций. Адаптируем домен двумя степами: 1) шарим csp filters между spoken и imagined EEG 2) делаем transfer learning с обученной модели на именно говорящие EEG

И тут интересный момент 🧊 CSP weights они натренировали именно на imagined EEG, а потом инферили на spoken, хотя в теории все лучше было бы делать на spoken. Таким образом latent space of spoken speech приближают к imagined. Также добавляют, что это позволяет именно речь отразить, а не артикуляцию и всякие шумы.

Задротский комментарий: в статье написано, что делили на 5 фолдов, но нет информации удаляли ли спикеров теста из трейна. Возможно этого не было, а это можно считать test leakage.

______
Что получилось в итоге? Супер-пупер все вкусно декодируется для слов, которые были при тренировке. Не так все хорошо для новых. Но нужно учитывать, что и учили на 6 людях, у каждого 12 фраз. Работает и славно.

Короче - пайплайн классный, больше людей и все точно будет офигенно, как пел Паша Воля.

статья
семплы

Читать полностью…

grokaem себя

POLARS

docs

часто, очень часто я работаю с csv файлами и даже с excel (это отдельная песня, которая точно прокачала мое терпение)

Так вот, про polars я слышала довольно давно, но как-то он был ни к месту, но вот пришел момент, когда файлов дохера, все они обрабатываются, операции относительно тяжелые.

Что предлагает polars?
Polars написан на Rust, его главные фичи, которые мне нравятся:
- Out of Core - если сделать streaming=True, то мы можем не подгружать все данные в ram
- Parallel - параллелит процесс на cpu cores сам, без помощи и обходов
- Vectorized Query Engine - использует свой написанный Apache Arrow, a columnar data format, чтобы использовать vectorized manner and SIMD - собственно самый главный плюс и почему это быстрее

Примечательный посты на эту тему:
- длинный пост про apache arrows, апдейт с pandas 2.0 и подробные примеры
- пост о разнице pandas и polars, например поддержка не только eager - как написал, так и исполняются, но и lazy operations, это когда написанные операции могут меняться в порядке или даже дропаться
- пост о vectorization в pandas или почему не надо делать for, но тут почти говорится, что apply - это векторизация, что спорно
- пост о разном понимании векторизации
- qa в apache arrows о том, почему он вообще нужен и как он экономит под 80% компьюта

в постах затрагивают понятия, берем карандашики:
- interoperability - отсутствие deserialize степа при processing или грубо говоря общий формат между языками и тд, как csv
- SISD и SIMD - SISD (for loop), SIMD (one instruction for all samples)
- Apache Arrows - language agnostic формат данных

Что я не сразу врубила в polars и хотела бы сохранить и потом искать поиском в канале?
0️⃣ просто сделать apply на одну колонку со своей функцией

data = data.with_columns(pl.col("col_name").map_elements(your_func).alias("col_new_name"))



1️⃣ сделать apply based on двух колонках

data = data.with_columns(pl.struct(["col_name_1", "col_name_2"]).map_elements(lambda x: func(x["col_name_1"], x["col_name_2"])).alias("col_name_new"))

Читать полностью…

grokaem себя

#grokaem_audio

LLM стали частью систем TTS и даже ASR. Одно из влияний - промтинг.

На рассвете дня - статья, с которой я довольно много работаю последнее время, но почему-то не написала обзор.

статья

Промтинг был и в AudioBox (обзорчик), там мы отдельными классификаторами вытаскивали параметры речи и звука и пихали это все в LLAMA. В той статье было мало деталей как раз этих параметров и того, как дальше приклеить этот промт?

0️⃣Начнем с того, зачем вообще он нужен?
Для получения более ярких и разнообразных samples мы можем добавлять style embeddings, например просодии. Но тут вопрос: если нет рефернсного аудио, что делать? Если я хочу озвучить текст малайским акцентом, а у вас только бритиш эксент? Нужна scalability. Еe можно получить, если не делать человеческие аннотации.

1️⃣ Тут авторы предлагают собирать много всякого разного:

- accent - тренируем свою модель (linear classifier на language id embeddings)
- recoding quality - SNR (signal to noise ration) и C50 (показатель разборчивости речи в помещении, статья)
- pitch
- speaker rate
- gender

Но обычные значения для какого-то SNR ничего не говорят LM. Поэтому для не дискретных категорий они сделали бины и из бинов сделали keywords, а дискретные сразу в keywords. Это все поперчить и отправить в LM (Stable Beluga 2.5).

2️⃣Но до этого этапа мы говорили только о description или аннотациях к речи. Как это запихнуть в TTS?

Здесь авторы не изобрели велосипед, а взяли пайплайн с audiocraft: embedding c t5 (у audio craft были поверх линейные слои, чтобы соответствовать dim у quantized tokens) и cross attention на сами эмбединги и tokens с codebooks. Encodec поменяли на Descript Audio Codec. Подробнее код.


3️⃣Интересно, что такой подход помогает на этапе тестирования. Го подумаем до вечера, как легче всего проверить, что аудио получилось действительно таким, как было в описании?

Читать полностью…

grokaem себя

На улице появился асфальт, а я металась в попытках успеть спорт, жизнь, работу и другие проекты, так что eagle и keywords обзора так и нет. Извиняйте, не серчайте, зла за душой не держите, порчу не наводите, оклемаюсь - напишу, вы не прочитаете, зато совесть будет чиста, а есть ли она у меня, если я так редко что-то пишу (?)

Читать полностью…

grokaem себя

#grokaem_nlp

Наткнулась на ревью методов 2023, которые основаны на идее сделать модель меньше, но лучше. Автор разделяет 4 направления 2023:

- weight averaging и model merging
- proxy tuning
- mixture of experts
- pretraining small models

🐚ракушки, послушайте звуки моря, а не метель🐚
Краткие заметки на полях:
1. Weight averaging и model merging это не traditional ensemble, потому что мы не держит несколько моделей, мы их объединяем в одну. Weight averaging - это SWA, EMA, LaWA и modified LaWA. Model merging - это когда мы комбинируем натренированные разные модели (Ratatouille, LoraHub). В наших любимых каналах не нашла обзоры на эти статьи, мб кто-то видел? Классный пост про это у Dealer.ai
2. Proxy tuning - менять логиты у LLM согласно маленьким domain specific и finetuned. Из больших минусов - нужна finetuned маленькая и у нее должен быть такой же vocab.
3. Про Mixtral не заметка, но интересно, что сейчас она используется в браузере brave
4. В TinyLlama занятная заметка о "разрушенном" scaling law для 1.1B модели на 3.3 trillion tokens.

🐚опяяяять метельь🐚
А в конце автор оставляет много статей уже января, себе выделила наиболее завлекающие:
* EAGLE - новый метод в speculative sampling family (надо читать!)
* MambaByte - token free lm on raw bytes (чтоо?)
* Knowledge Fusion of LLM
* Soaring from 4K to 400K - новый метод activation beacon тоже для большого контекта (кто придумывает названия? это тот же человек, что придумывает названия аптек?)
* LLM Maybe LongLM - bi-level attention (group and neighbor)

Читать полностью…

grokaem себя

Ладно, выгрузка по nlp тоже есть))

0. Узнала о фреймворке для "редактирования знаний LLM"
1. Наконец поэкспериментировала с p-tuning и prompt tuning. Лучшее объяснение разницы нашла от Ильи Гусева (его HF, если вы еще не знали)
я как-то раз коллеге так объяснял:

prompt-tuning = добавляем виртуальные токены в начало промпта
p-tuning = добавляем виртуальные токены куда-нибудь в промт (например, в середину)
prefix-tuning = добавляем префиксы во все слои


2. Саша и Карина выложили вихрь
3. Силошная выложил мини-курс по GPT, первая лекция ну просто супер-вкусная! Было очень интересно! Мысли по энтропии, компрессию и фичи, ну чистый кайф
4. Early weight averaging показали, что можем усреднять модели во время тренировки, небольшая критика
5. MLX выложили поддержу квантованных llm, мне понравилось
6. Выложили большую книгу о vector retrieval
7. Офигительно интересный эксперимент Техножрицы по дропаутам!

Читать полностью…

grokaem себя

У меня есть теория о том, что все сохраненные сообщения в телеграмме имеют такой же вайб, как и фотки доски/слайдов. Я их не открываю и не перечитываю. В сохраненных они появляются, потому что я ненавижу непрочитанные сообщения и скидываю интересные посты в избранное или закладки (навсегда). Максимально эту проблему я почувствовала, когда перешла на Arc и понесла все закладки с собой...

Решить эту мини-проблему я попробую небольшими постами с новостями/постами за ~месяц.

Читать полностью…

grokaem себя

#grokaem_nlp

На днях выложили овервью (37 страниц...) подходов к обработке очень длинных последовательностей в LLM

Приятная табличка внизу. Делят на интерполяцию и экстраполяцию, а для каждого подхода разбирают zero-shot и файнтюн для attention и для positional encoding.

interpolation:
- attention: LongLoRA/QLoRA, LM-infinite
- prompt compression
- RoPE: Linear positional interpolation, Yarn, PoSE

extrapolation:
- positional encoding: ALiBI, RoPE, randomized PE
- attention: xPoS, LongNet
- window based
- retrieval: Landmark attention, augmented language model with long memory

Кажется, удобной статьей, если вы сейчас боретесь со слишком длинными последовательностями и запутались во всем, что выходит каждый день.

Но меня преследует мысль о том, что подход - добавить что-то неверен сам по себе и лучшее решение проблемы это решение, которое в системе уже существует, но я хз

статья

Читать полностью…

grokaem себя

Как-то раз мы обсуждали, что одна из сложностей в генерации музыки с midi в соединении разных элементов в одно. Ведь включается и выключатся каждый из инструментов в свое время, при этом создавая совместно с другими приятную композицию. А что в голове? Some brain regions (temporal и frontal) оверлепят с speech processing, но есть и отдельные регионы, которые процессят только музыку (stg, ifg). Но какой регион отвечает за пианино, а какой за реп? И делятся ли они так?

вопросов много: от захвата музыкального мира до шазама с мрт, но главное 'как мы слушаем?'

🧠🧠🧠
На вход будем подавать iEEG (HFA сигнал, с виду похож просто на wave) Важно, что есть разные eeg инвазивные и неинвазивные (собственно тут именно инвазивный, то есть 2668 электродов ставили на мозг напрямую, треш, да? Потом выделили около 300 важных, но все же)

🧠🧠🧠
Используем метод stimulus reconstruction. Мы его уже видели в посте про чтение мыслей. Сначала как-то рекордим brain activity (fMRI, EEG и тд) и потом делаем regression model, которая должна восстановить эту активность. Но если encoder модель чаще всего делает именно так, то есть она пытается понять, как выглядит обычная активность мозга при каких-то триггерах. То декодер в данном случае делает наоборот, он берет HFA или сигнал от мозга и пытается вернуть спетрограмму.

Считается, что fMRI лучше подходит для локализации активности, а EEG для ее динамики. В теории мы можем (?) их соединить.

🧠🧠🧠
Авторы сравнивают два типа восстановления-декодирования: linear и non-linear. Где нелинеар MLPRegressor с 2 слоями.

пинк флойд

из интересных файндингов:
- non-linear reconstruction хоть и довольно простой способ, но дал гораздо более fined спетрограммы (картинка внизу)
- больше всего эффект виден на правом полушарии мозга, который (как предполагается) именно и процессит музыку. А больше всего активен anterior–posterior STG или как я запоминала в универе - та закрученная сосиска
- также авторы выделили 3 компоненты или региона, которые наиболее активны на определенный музыкальный инструмент или вокал (p.8, вторая картинка)

Читать полностью…

grokaem себя

Всех с наступающим новым годом! ✨ Кажется, нужно желать того, в чем мы все нуждаемся: мира, здоровья, уважения, искренней любви и искры от интересных проектов в глазах!

Мне хотелось сделать что-то приятное для вас в честь этого праздника. Надеюсь, что этот небольшой список вопросов будет для вас полезным и нужным подарком.

Обнимаю,
Милана

Читать полностью…

grokaem себя

Unlimiformer c NeurIPS

github

paper

0️⃣ Проблемы?
Длинные последовательности, поэтому невозможность тренировки/долгого тюнинга

1️⃣ Решение?
Меняем cross-attention на индексирование с KNN, knn distances теперь станут как раз attention dot-product scores. В тестовом режиме главная задача заугментировать уже натренированную модель на последовательности разной длинны.

2️⃣ В чем плюсы?
generic approach: Не нужно тюнить. Не нужно добавлять веса. Индексы можно держать и на CPU. Авторы также предлагают разные способы тренировки и тюнинга. Например, юзать unlimformer только на инференсе и делать по нему early stopping.

3️⃣ Как делаем?
KNN на hidden States всех инпут токенов. Каждый блок с cross-attention обращается к KNN и берет только top-K input tokens.

Пайплайн:
- последовательности, что больше заданной длины, пилим на чанки с window size, берем вектора из серединки. Эта техника была тут предложена (’22).
- Создаем KNN index на encoded inputs, юзаем для этого Faiss. Dot-product это similarity metric для KNN index.
- На каждую cross attention head в декодере мы будем делать retrieval top-k.

5️⃣ Что с памятью?
Если у нас теперь задача это вылавливать Kbest set of keys, чтобы максимизировать attention, то, как и самурая у нас два пути (вебкам и айти):
- создать индексы для keys, HeWk, но Wk - head and layer specific, тогда нам нужно создать не один сет векторов, а сеты для keys и для values (2*L*H: L - кол-во декодер слоев, H - кол-во голов), больно и слишком дорого
- поменять порядок подсчета, теперь мы считаем (Hd * Wq * Wk)* He, то есть нам не нужно хранить и создавать отдельно head-layer индексы для keys, мы будем держать только encoder вектора.

Как говорят авторы: на 1млн 16 битных эмбеддингов 1024dim нам нужно будет 2gb памяти, та еще и на cpu можно.

6️⃣ Что по скорости? Ведь у нас дополнительно появляется индексирование.
Важно понимать, что на двух стульях тяжело усидеть и поэтому есть трейд-офф между памятью и speed. (Картинка внизу)

C Бартом реализовано все и буквально любую модель можете включить, а вот с T5 у меня завести пока что не вышло...

#grokaem_nlp

Читать полностью…

grokaem себя

AudioBox

Выложила мета модель для генерации речи и звуков, ну и звуков на фоне речи. Та и чтобы с хорошей настройкой.

0️⃣ В чем цель?
Уйти от modality-specific части, когда генерится только музыка/речь/звуки.

NON-Autoregressive generative model - генери не по одному токену/элементу, это необходимо для быстрого инференса)

1️⃣Как работает?
Для этого используется conditional-flow matching алгоритм (p.6, background) (статья). Его работа похожа на диффузии (введение на русском)
Спасибо Леше за помощь 🙌🏻

x0 - какое-то априорное пространство
x1 - какое-то сложное постериорное пространство (для нас какие-то эмбеддинги или спектрограммы)
t - шаг трансформации

Наша flow matching модель должна из x0 перейти в x1 с помощью предсказывания изменений на t шаге трансформации. К этому классическому пайплайну был добавлен метод Lipman'а 2023 года, где для более простого/эффективного обучения и помощи модели в простраивании пути от x0 к x1 мы добавляем Optimal Paths.
лекция

И тут начинается самый экшен:
- masked audio - максированное аудио
- z transcript embedding aligned текстовые транскрипты прогоняем через линейный слой
- аудио тащим через Encodec (о нем в этом посте), к нему добавляем шум и маски, конкатим по каналам, все через линейный слой
- эмбеддинг транскрипта и аудио конактим
- перчим sinusoidal embedding наконец по временной dimension
- запускаем в transformer 2017

2️⃣ Какой претрейн? Он не поменялся с Voice Box - это self-supervised infilling objective - BERT на максималках

3️⃣Но мы же не про TTS тут говорим? (глава 6)
Да, поэтому мы возьмем caption descriptions типо (the wind is blowing), прогоним его через T5. В трансформере все attention поменяем на cross attention, keys and values - text embeddings. Также и будем делать с voice prompt.

4️⃣А что с voice prompt? (глава 7)
Он нужен, чтобы описать хар-и голоса (age, accent, emotion). Если не прокидывать аудио промт, а делать описание речи, то задача становится похожа на TTA (Text-to-audio). Тут для валидации предлагают Joint-CLAP - две ветки на аудио и на текст и учим их через contrastive loss. Для звука у нас WavLM, для текста RoBERTa. А вот где брать сами промты? 🌈LLaMa 🌈 прикиньте и здесь она

Достают классификаторами или из metadata age, gender, audio quality, pitch, speaking rate, accent, emotion, environment и просят LLM сделать caption. Например, "Young man is angry. Audio is okay, small place. Accent from South Asia. Speaks normal" (если честно, листая примеры на сайте, я подумала - ну точно llm, а потом читаю статью и это реально она) Ну и без human annotation не обошлось. А дальше (как я поняла) прокидываем также как и в TTA (text to audio)

Как оно все звучит? Примеры внизу 👇🏻

#grokaem_audio

ПОИГРАТЬСЯ С ГЕНЕРАЦИЕЙ БЕЗ РЕГИСТРАЦИИ И СМС (но с vpn)

Читать полностью…

grokaem себя

#grokaem_nlp

ЗАМЕТКИ Vinija's по NLP (LLM)

Я в какой-то момент разучилась делать хорошие конспекты, а вот заметки других людей меня восхищают. Vinija's заметки на курс CS224N в Stanford. У нее они буквально по большинству вещей в NLP: LSTM, Attention, preprocessing. Но это все не так вкусно, а вот:
🪄🪄🪄
- обзор по Prompt Engineering от простого few-shot, до system 2 attention и chain of note/knowledge/thought и тд
- hallucination
- context length
и тд и тп
🪄🪄🪄

Не могу сказать, что заметки очень детальны. Вы там не найдете формул или подробных объяснений. Но мне очень нравится лаконичность, последовательность и ссылки.

На данный момент у нее самый приятный обзор по prompting, что я встречала))

Читать полностью…

grokaem себя

Вышла Parler TTS демо (веса, код, промпт)

Помните пост про генерацию TTS с заданными параметрами и, может быть, помните пост про MusicGen? Это вот все от них пошло.

🐢Для чего можно юзать? 🐢
- прогнать по параметрам исходную речь, прогнать сгенерированную - сравнить
- прогнать на весь датасет - отфильтровать странные семплы

Выкатили код и демо. Сказать честно, демо хорошее на чирипукнутых, а вот на мой промт: "A female speaker with a very high-pitched voice, the speech is very fast. The speaker is sad. She even cries." получила какую-то веселую девушку с нормальными даже низким питчем. Сейчас доступно только пару параметров (pitch, snr, speaker rate, reverbation).

Читать полностью…

grokaem себя

#grokaem_thoughts

Рандомные штуки я пишу в чатах, но кажется многие можно постить и сюда, думала даже про отдельный чатик, но пока нет, буду мусорить - скажите))


Мне нравятся видео компании Skyeng, сама курсы у них не брала, но видосики смотрю часто и много. Сегодня вечером вышло новое видео, и ребята сделали ассистента, который анализирует ваш уровень.

Можно ожидать, что придется тыкать кнопочки, но нет:
НУЖНО ГОВОРИТЬ и ВАМ БУДУТ ОТВЕЧАТЬ! 🙉

Что круто?
0. Она говорит. Голос робота, но он не бесит, довольно приятный.
1. Она поддерживает контекст. Про хобби в самом начале разговора я ответила, что увлекаюсь NLP и в конце она выдала: Клево, что получилось пообщаться с людьми, которые занимаются таким как я. В КОНЦЕ ДИАЛОГА она помнит, чем я занимаюсь. У меня семья до сих пор не все запомнила.... Также задает наводящие вопросы с отсылками на твой ответ.
2. Она хорошо распознает речь. После можно посмотреть, что ты там наболтал и вроде бы все так))
3. В конце дают аналитику всего уровня и аспектов, где ты слабачка. У меня в этот раз это fluency, надо пройти не после работы и тренировки....
4. Показывают не только уровень, но и Thing to improve - фразы, которые ты хреново сказал и показывают, как надо было.

Крутые ребята в Skyeng! Я бы действительно болтала с такой учительницей.

Проверить уровень

Читать полностью…

grokaem себя

Так как в плане на этот год стоял этот пункт, а кто я такая, чтобы не выполнять желания январской Миланки?

Читать полностью…

grokaem себя

#grokaem_audio

Интересная статья на medium (что уже редкость) об ускорении whisper для real-time.

Code
Medium

заметки на полях:
0. whisper работает по семплам в 30s, для реалтайма нам нужно процессить семплы и короче, как только они приходят. На этом моменте авторы заметили, что паддинг, который ставит whisper а) разделяет слова, которые еще произносятся б) увеличивает кол-о галлюнов. Первый случай решают re-прогоном, копят короткие семплы к 30s и прогоняют снова.
1. хранят intermediate states (хз что именно тут подразумевают) для реконнекта
2. для streaming диаризацию используют тык на x-vectors. Тут они на каждый чанк считают эмбеддинг, делают clustering на часть предыдущих эмбеддингов, ремепят лейблы и продолжают
3. объединить этот пайплайн с whisper + диаризация тот еще оркестр, потому что как раз диаризации нужно достаточно предыдущих эмбеддингов, а whisper хочет до 30s, чтобы пересчитать, но тоже извините меня не москва, не резиновый - тут они а) resegment выход у whisper и б) ставят похоже forcefully трешхолд какой-то
4. есть еще сложность в кол-ве engines, потому что пайплайн с shared queue тоже не сработает, ведь подключение должно быть постоянным, не получится распознать часть и взять джобу, тут тоже предлагают оркестр с worker pool, к которому прилетает информация и он инициирует подключение

Читать полностью…

grokaem себя

ФЕВРАЛЬ 2024

NLP
:
0. Пост про embeddings для поиска, можно брать в заметки для собеса.
1. Новый метод self-playing.
2. У Ильи Гусева появился канал, вот например клевый пост про утечку данных.
3. Вышла gemini на овердохера контекста (1млн), у нее много критики. Но сам вопрос длинных контекстов как никогда актуален. Рассуждения на эту тему.
4. Transformer United - пачка видео research orientated про NLP, клевое по RAG. Собрано давно, нашла сейчас.
5. Вышла DoRA - DoRA: Weight-Decomposed Low-Rank Adaptation, paper -> разделяем magnitude и direction, LORA на direction, источник.

Audio:
0. Вышла LLM ASR approach, источник, статья - почти все frozen, тренеруется только linear projection, звучит классно и похоже в теории на encodec, интересно, почему не юзают его.
1. Вышла Supervoice-GPT для перевода с текста на фонемы + duration.
2. Overview audio codec моделей, постоянный источник.
3. Вышла audio synthesis работа с NVIDIA: paper, источник. В HIFIGAN добавили Snake function для periodic inductive bias. Очень классные семплы.
4. CTC is still alive, paper СTC + prompt (ASR & ST), внутри self-conditioned CTC, быстрее 3,6 speed up. paper
5. Stability.AI выкатили StableAudio: CLAP + UNET + VAE (последний кстати тоже с snake function) paper, samples

others:
0. У моего знакомого, который учится в mbzuai был пост про вопросы к собесу
1. Вышла новая модель russian vibe для генерации грустных русских девятиэтажек - пейзажей
2. Я собрала еще один пазл, важная новость - я считаю

Читать полностью…

grokaem себя

Декодируем речь. Не опять, а снова.

paper

🧊🧊🧊
В чем проблема?
- Нам не нужна отдельная decoding модель под каждого спикера. Мы можем добавлять отдельный 'speaker embedding', а юзать полную большую модель как для кодирования речи, так и для кодирования сигнала мозга.
- При regression моделях у нас все частоты равны в своей важности, также как и размерности. Но в жизни это не так. Низкие частоты мб не релевантными для восстановления. Поэтому давайте использовать constrastive loss. Правда тут уже задача становится матчингом, а не генерацией. Но да ладно.

🧊🧊🧊
Суть и модель:
Главная задача - заметчить brain recording с speech recording. По сути то же самое, что image <-> text, только данные сложнее.
Для этого у нас будет два блока: speech and brain.
1. Speech будет работать на wav2vec 2.0. По анализу показали, что использовать такой же как у brain model - неэффективно, ну и славно.
2. Ведь в brain model все сложнее: сначала колдовство с обработкой eeg/meeg, потому spatial attention + spatial dropout, потом добавляем выученную матрицу с такой же размерностью под каждого subject, а потом только conv с residual skip connection, они же dilated.

🧊🧊🧊
Интересные файндинги:
- Жестко запарились над test leakage. Каждый сегмент (речь 3s) относится только к одному сплиту. Никаких одинаковых предложений среди сплитов.
- Outliers тоже почистили, чтобы eye movement, electo-magnetic environment не влияли на сигнал. Для этого они вычитают среднее начала по каналам, а также делают robust scaler.
- CLIP дает более точечную реконстракцию. Но тут имхо играет роль, что они берут weighted average на предсказанные семплы.
- Чтобы понять качество на уровне слов, юзают такой пайплайн: берем три секунды сегмента именно brain recording для каждого слова в тестовой выборке. Берем probability distribution over all test segments. Сами сегменты группируем по одинаковым словам, вероятности складываем по сегментами (сложно, пипец)
- MEG показал качество лучше чем EEG. Хотя не было данных, где у каждого subject был и тот, и другой способ получения. При этом качество для слов, которые не были в train с MEG падает гораздо меньше по сравнению с EEG (A.7)
- Больше bins в MelSpectrogram дает выше качество (А.5)
- В конце добавляют, что поверх необходима lm.

🧊🧊🧊
Как вы считаете, есть ли будущее за таким подходом метчинга или все таки нужна модель (linear, diffusion) для восстановления из brain activity в речь? И что лучше latent speech encoding или melspec?

Читать полностью…

grokaem себя

только не скидывайте себе в избранное эти посты)))

Читать полностью…

grokaem себя

Так как никому неинтересно, что происходит в music ai, вот новости из music ai за прошедший ~месяц 😈

0. Splash теперь в Alexa
1. Suno Ai теперь в Bard
Тактика взять стартап и прикрепить его к своему большому проекту? Эх, российской монополии на ребят нет..(

2. Valerio выложил курс по генерации музыки. Мне пока не зашло

3. Вышла новая не авторегрессионная модель MAGNET, о ней был пост

4. Британское правительство в вопросе о правах на ии музыку отказалось от направления с text and data mining, так что тренироваться можно только на лицензионной музыке, так? Когда это придет в тексты?

5. Endel в кооперации с техническим университетов Дрездена открыли Phd на sleep and music. "You'll be involved in pioneering research, testing algorithmic music with wearable EEG devices in home settings."
Так все таки чип инвазивно или наушники?

6. Vinja notes выложила небольшой скоп рекомендательных алгоритмов от разных google, tiktok и тд. Статьи относительно старые, но интересно

Немного про asr и tts:
7. RNNT не стоят того?
8. Выложили readme с списком текущих tts
9. Вышла incremental fast pitch

Читать полностью…

grokaem себя

#grokaem_audio

MAGNET - MASKED AUDIO GENERATION USING A SINGLE NON- AUTOREGRESSIVE TRANSFORMER

В генерации музыки есть (на мой взгляд) две проблемы:
- долго генерим
- не умеем в долгую генерить

🪗idea behind🪗
За решением первой проблемы мы можем попробовать перейти от авторегрессионности к привычному маскированию. Но есть же диффузии, скажите вы. To reach high-quality music samples recent studies report using a few hundred diffusion decoding steps говорит meta. А что если попробовать сделать что-то между? Декодировать какое-то кол-о степов с нуля, но не авторегрессионо, а делать condition от полученных токенов? Именно это и предложили в MAGNET.

🪗pipeline с перебивками🪗
0. Начинаем с нуля. Все замаскированно.
Предсказываем с condition на текст, он по традиции от T5. Дальше толи от того, что сначала не получалось, толи действительно с мотивацией на asr rescoring, мы делаем rescore с MusicGen или AudioGen. Токены, которые получились ок с высокой вероятностью - оставляем. Другие - маскируем.

1. Стой, но разве токены рядом не шарят информацию между собой?
Да, так и есть. Поэтому давай маскировать не токен, а span. Это то же самое, как маскировать не отдельный токен, а все слово.

2. Стопе. У нас же encodec может копить ошибку, ведь у нас внутри RVG вектора.
Да, да. Поэтому на codebooks дальше чем 1, то есть те, которые исправляют ошибку и созависимы от предыдущих, будут в self-attention смотреть только на несколько соседей.

2.0 Интересно, что text conditioning предлагают уменьшать в Classifier Free Guidance относительно masking rate. То есть когда мы уже что-то нагенерили, мы будем делать скорее infilling чем просто кондишн на тексте.

3. Если мы итак делаем rescore с MusicGen и (мб у нас просто все херово получается сначала) давайте и в начале будем генерить с MusicGen, а уже потом будем делать маскинг. Как расклад?
Не таро, но тоже норм и назовем это все классно - гибрид 🌈

code

в предыдущих постах:
набор sota моделей для music ai
обзор на audio box
обзор на encodec

Читать полностью…

grokaem себя

#grokaem_audio

hf overview whisper
hf overview speculative decoding

Один из способов сделать 2x speed up saving accuracy

Есть более быстрая и маленькая assistant model и большая main model.

🪩
Этапы:
1. assistant генерит N токенов
2. big model их получает, делает один форвард, подверждает правильные токены и находит первый неправильный и исправляет
3. assistant получает обратно правильные токены + 1 исправленный

🪩
Считается, что ассистент должен быть как минимум в 3 раза быстрее, чем большая модель. Так останется трейд-офф между качеством и скоростью. Что-то типо: ассистент сможет загенерить и простые токены, а сложные (где он ошибется) исправит большая модель.

🪩
Почему это так работает?
Вспомним архитектуру whisper, у него есть большой блок декодера, как обычный gpt. Если у NLP моделей мы можем заюзать такого рода декодинг, то и тут тоже. Общая идея - пересмотреть forward pass. идея При forward pass нам доступны логиты на предсказание след. токена для всех токенов на всех позициях. То есть, если мы возьмем greedy decoding, прокинем все сгенерированные до этого токены, посмотрим на эти логиты, то получим исходную последовательность. Эту проперти и используем.

Однако в примерах учитывайте, что есть truncation на 30 секунд. Также сейчас поддержка только с greedy search.

🪩
Я чекнула на небольшой 9мин записи с stutter и буст был с 60с до 40с в обычном коллабе

Читать полностью…

grokaem себя

#grokaem_собес #grokaem_nlp
Я собрала 100 вопросов по NLP, которые мне задавали или задавала я. Надеюсь, что они будут полезны, чтобы освежить в памяти важные моменты.

*Notion будет пополняться*

Notion русская версия

В составлении вопросов помогали:
ds girl
канал Плюшевый Питон
Alexander Babiy
канал что-то на DL-ском
канал Dealer.AI
канал алиса олеговна

Часть вопросов:
8. Объясните разницу между косинусной близостью и косинусным расстоянием. Какое из этих значений может быть негативным? Как вы будете их использовать?
21. Что такое negative sampling и зачем он нужен?
30. Что такое затухающие градиенты для RNN?
41. Что используется в трансформере layer norm или batch norm и почему?
55. Объясните подходы для позициональных эмбеддингов и их плюсы и минусы.
75. В чем отличие оптимизатора Adam от AdamW?
86. Объясните концепции metric learning. Какие подходы вам известны?
88. Объясните виды sampling при генерации? top-k, top-p, nucleus sampling?
92. В чем отличие prefix tuning от p-tuning и от prompt tuning?
98. Объясните принцип работы KV cache, Grouped-Query Attention и MultiQuery Attention.

Читать полностью…

grokaem себя

- AI нужен для людей.
- Ты про генерацию аниме тянок?
- Нет, про другое...


С обновлением ios прилетела новая accessibility фича - private voice. (на телефоне она работает с 12 айфона) Еще месяца два назад я сделала ее для своего голоса (примеры внизу).

Люди теряют голос по разным причинам, иногда это следствие рака или болезни Паркинсона. От этого никто не застрахован, к сожалению. Кроме того, с возрастом у многих людей меняется vocal track и голос становится более хриплым (Presbyphonia).

Сейчас private voice можно создать, записав фразы на английском языке. Надеюсь, что дальше эта voice conversion технология будет только улучшаться.

Создать свой голос можно через: настройки - универсальный доступ - private voice.

трогательное видео
больше про accesibility
voice disorders

Читать полностью…

grokaem себя

METHODS in PAPERS WITH CODE

Я сама не видела и не знала, но Сережа показал классный блок у papers with code с методами. Их тут ну очень много:

- у attention 124 метода, не только для текстов
- 71 метод для активаций
- 56 методов для регуляризации
- 49 skip-connection types
- 39 функции потерять
и тд и тп

Такая организация будет удобной, если вы застряли в каком-то моменте и нужно попробовать что-то новое, это новое найдете в этих блоках.

Как говорили великие: нечем заняться, взяла начистила картошки и приготовила, соседей угости, открыла paperwithcode, читаешь и подписчикам рассказываешь

Читать полностью…

grokaem себя

@grokaem_seby_thoughts

В этот маленький праздник (1к) позволю себе в канале нетех пост. Я не делюсь своими проектами, работой и так далее здесь, хотя мб и стоило бы. Но хочется пошарить с вами одну мысль.

Одна из вещей, за которыми я стремлюсь - это состояние потока. Его описывают контролем, полной концентрацией, ощущением, что само действие уже награда и так далее. Для меня это было ощущение слияния с действием и погружения, где я не чувствую времени и могу взлететь над самой собой и увидеть себя со стороны. (медитации? нет ботать? да) Я ловила это состояние только несколько раз в жизни в профессиональной сфере. И так хочется поймать еще и еще.

Так случилось, что это состояние я чувствовала, когда ботала. И убирала телефон. И ставила на таймлапс. В погоне за этим спокойным состоянием, так я делала оооочень часто. Сейчас я могу не ставить таймплапс и не отвлекаться. Но это был такой этап приучения. Как кататься на 4 колесном велике перед тем как пересесть на обычный.

Эти видео было жалко сохранять только в памяти телефона, я их склеила. Как и делаю почти со всеми видео, которые постоянно снимаю) (я всегда с собой беру видеокааамеру) Тут около 3 лет таймплапсов. Дома, в общаге, в додо, в библиотеке и тд. Клево наблюдать, как я менялась внешне. Как менялось все вокруг. И то, что я делаю. К сожалению, тут больше всего видео с 2020-2021 года (наверное, от этого мне еще теплее смотреть эти видео и гордиться юной Миланкой).

видео, где я ботаю

Но в данный момент я в Нижнем Новгороде и мне повезло снять квартиру с приятным видом. Поэтому я решила перестать бояться и наконец достать идею 2022 года с полки и попробовать снимать study/code with me. Музыка на этих видео сгенерирована с помощью audio craft, а промты написаны с chatgpt. Включайте, если будет скучно и будете в поиске состояния потока как и я.

Спасибо вам большое, что читаете и тратите свое время на мной написанные буквы и удаленные запятые ❤️

code with me

Читать полностью…

grokaem себя

Будем читать мысли. Погнали.
*во многих моментах я могу сильно и не очень ошибаться*

Берем fMRI (функциональное МРТ), BOLD signal, который показывает активные регионы нейронов, к которым поступает больше кислород, его уровень поднимается и опускается примерно за 10 секунд. Проблема: мы говорим на английском примерно 2 слова в секунду, следовательно одна fmri содержит около 20 слов, то есть будем предсказывать целые фразы.

🪐🪐🪐
Делим весь пайплайн на несколько частей:

1. ENCODING (p.22)
Задача - получать brain responds (активные регионы мозга) относительно какой-то word sequence.
Вход - эмбеддинги от GPT 5 слов.
Внутри у нас линейная регрессия, предсказываем новые fmri по эмбеддингам и сравниваем с реальным.
Коэффициенты регуляризации находились для каждого subject.

2. WORD RATE (p.23)
Однако, чтобы начать декодировать, нужно понять, когда вообще человек начинает думать о слове (imagine or perceive). Для этого возьмем еще одну линейную регрессию, на вход снова fmri, на выходе word rate, который мы получили как раз из историй. Word rate здесь это кол-о слов стимулов с предыдущего запроса.
У каждого subject своя модель.

3. DECODER (p.24)
Задача - выплевывать candidate sequences, для этого держим beam search. Внутри у нас затюниная GPT на reddit comments и рассказах, которые не юзали в примерах.

🪐🪐🪐
Пайплайн получается такой: взяли слова - расширили их - взяли эмбеддинги - получили FMRI от Encoding части и сравнили с реальным FMRI, если все ок - храним последовательность

К этому моменту у нас есть один важный вопрос: как мы получаем самые ПЕРВЫЕ слова? Ведь encoding часть нуждается в готовых эмбеддингах, word rate модель выдает кол-во слов, а decoder вообще нуждается сразу в каких-то словах. В этот момент я написала трем авторам статьи (да, нестрашно и да, они не ответили) и открыла код. В грезах функций для всяких специальных медицинских семплингов я нашла ту волшебную переменную INIT = ['i', 'we', 'she', 'he', 'they', 'it'] Именно она и подается в самом начале. Так и есть, откроем suppletementary tables p.35 и каждый пример для всех subjects начинается с одного из этих местоимений. Ок это или не ок - велком в комменты.

🪐🪐🪐
Теперь факты:
1. Принимало участие всего 7 людей в возрасте от 23-36 лет. Для декодинга использовали троих (двое мужчин (36, 23) и одна девушка (23)).
2. Всю часть мозга делили на 3 cortical части: классически принятая языковая часть, parietal-temporal-occipital association network, prefrontal. Картинка в комментариях. И декодировали с каждой из частей. Занятно, что вторые две части а) по предсказаниям очень похожи б) показывают себя лучше чем только языковая
3. Было пять разных процессов и их влияние на декодер измеряли: (p.8)
- perceived speech, слушаем речь
- imagined speech, люди представляли, как они рассказывают историю
- perceived movie, смотрим фильм (4-6 минут), где почти нет речи
- multi-speaker, слушаем историю, которая перебивается другой историей и делаем фокус на одном из спикеров
- decoder resistance, слушаем историю и в это же время считаем или называем животных, или рассказываем другие истории про себя.

Конечно, это не чтение мыслей, но точно мощный к нему шаг. В статье много деталей, так что возможно к чему-то еще вернемся 🤞🏻

семинар, где был обзор
код
новостная статья
статья

Читать полностью…
Subscribe to a channel