- BrainTools - https://www.braintools.ru -

Как мы перестали писать промпты и превратили ИИ в аналоговый синтезатор через PyTorch Hooks

Спойлер: Никаких банальных ИИ-оберток, где текст конвертируется в звук через API. Только хардкорная хирургия нейросетей, кросс-модальные мосты и перехват мыслей LLM в реальном времени.

За последний год Hugging Face превратился в конвейер одинаковых проектов: берем Llama/Gemma, прикручиваем к ней интерфейс на Gradio, называем это стартапом. Мы для нашего виртуального музыкального артиста Livadies решили пойти другим путем. Мы задались вопросом: как звучит чистая мысль нейросети, если не переводить ее в текст? И как звучит математическая геометрия доисторического камня или кожи рептилии?

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

Эксперимент 1: PaleoSonic Engine (Слушаем голую математику)

Задача: Заставить нейросеть сгенерировать звук макро-текстуры (например, куска янтаря) НАПРЯМУЮ, минуя текстовое описание.

Обычно пайплайн выглядит так: Image -> Text (LLM) -> Audio. Это долго, грязно и убивает суть картинки. Мы решили сделать прямой мост: Vision Latent -> Audio Latent.

Мы взяли зрительную кору от google/siglip-base-patch16-224 и генератор звука от facebook/musicgen-small. Обе модели мы перевели в формат bfloat16, чтобы они влезли в бесплатные 16 ГБ RAM на Hugging Face.

Магия сшивания:

Мы создали кастомный мост nn.Linear, который переводит 196 визуальных патчей картинки в 196 звуковых векторов. Но функция generate() в MusicGen защищена от чужих тензоров. Что мы сделали? Применили Monkey Patching.

Мы буквально на лету подменили оригинальный текстовый энкодер MusicGen на нашу функцию-троян:

Python

# Сохраняем оригинальный "мозг"
original_text_encoder = self.audio_decoder.text_encoder.forward

# Создаем класс-подделку
class VisualThoughts:
    def __init__(self, hidden_states):
        self.last_hidden_state = hidden_states
    def __getitem__(self, idx):
        return [self.last_hidden_state][idx]
        
def spoofed_text_encoder(*args, **kwargs):
    # Подсовываем визуальные тензоры вместо текста!
    return VisualThoughts(audio_conditioning)
    
# Заражаем генератор
self.audio_decoder.text_encoder.forward = spoofed_text_encoder

MusicGen “думал”, что читает 196 токенов текста, а на самом деле поглощал чистую геометрию пикселей.

Почему звук такой странный? Если вы зайдете в этот проект, вы услышите резкий, скрежещущий шум, похожий на модем из 90-х. Это необработанный математический звук. Наш тензорный мост заполнился случайными весами (random initialization), и мы не стали его дообучать. Вы слышите физическое столкновение двух архитектур: сырую, грубую трансляцию геометрии картинки в акустические волны без фильтров и прикрас. Это звук самой логики машины.

🔗 Попробовать: PaleoSonic_Engine на Hugging Face [1]

Эксперимент 2: Neural-Analog Engine (Эмбиент из мыслей ИИ)

После первого эксперимента мы поняли: прямое сшивание дает концептуальный, но “грязный” звук. Мы решили сделать шаг в сторону изящества и вернуть звуку красоту, не теряя связи с ИИ.

Мы полностью выбросили нейросети, генерирующие аудио (типа MusicGen или AudioLDM). Вместо этого мы превратили LLM в виртуозного музыканта, который крутит ручки классического аналогового синтезатора (DSP).

Мы взяли открытую Qwen/Qwen2.5-1.5B-Instruct. Идея: пока модель генерирует текст по промпту (например, “Тишина замерзшей квантовой звезды”), мы с помощью PyTorch Forward Hooks вклиниваемся в ее 15-й слой (центр абстрактного мышления [2]) и воруем значения активаций нейронов в реальном времени.

Python

neural_activations = []

# Функция-шпион для перехвата мыслей
def steal_thoughts_hook(module, input, output):
    # Берем текущее состояние нейронов
    current_thought = output[0].detach().cpu().to(torch.float32).numpy()
    compressed_thought = np.mean(current_thought, axis=1)[0] 
    neural_activations.append(compressed_thought)

# Втыкаем "шприц" в 15-й слой Qwen
hook_handle = model.model.layers[15].register_forward_hook(steal_thoughts_hook)

Затем мы прогоняем эти сырые векторы через математический осциллятор (numpy + scipy.signal).

Почему этот звук такой приятный?

В отличие от первого проекта, здесь звук генерируется законами физики (чистые синусоиды, плавное затухание, математически [3] точные фильтры). Нейросеть выступает лишь как дирижер. Изменение тональности, частота нот, сдвиги фаз — всё это модулируется буквальной пульсацией нейронов Qwen 2.5. Получился кристально чистый, кинематографичный Dark Ambient, где музыка — это процесс вычисления графов внимания [4].

🔗 Попробовать: Neural-Analog-Engine на Hugging Face [5]

Зачем это все?

Вся эта архитектурная дичь была создана как экспериментальный baseline-инструментарий для виртуального артиста Livadies. Мы не хотим генерировать «попсу по кнопке». Мы исследуем, как звучит машинное подсознание и как слияние старого (аналоговый синтез/палео-текстуры) и нового (Latent Space) рождает искусство.

Залетайте в наши Спейсы, ломайте их, слушайте разницу между сырой математикой тензоров и кинематографичным DSP, управляемым мыслями LLM. Будем рады обсудить в комментах ваши способы изящного обхода защиты .generate().

Автор: Livadies

Источник [6]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/28430

URLs in this post:

[1] PaleoSonic_Engine на Hugging Face: https://huggingface.co/spaces/livadies/PaleoSonic_Engine

[2] мышления: http://www.braintools.ru/thinking

[3] математически: http://www.braintools.ru/article/7620

[4] внимания: http://www.braintools.ru/article/7595

[5] Neural-Analog-Engine на Hugging Face: https://huggingface.co/spaces/livadies/Neural-Analog-Engine

[6] Источник: https://habr.com/ru/articles/1020544/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1020544

www.BrainTools.ru

Rambler's Top100