Zpět na domů

PyTorch Hooks pro audio z aktivací LLM

Článek popisuje dva experimenty: přímé spojování vizuálních latentů SigLIP s MusicGen prostřednictvím monkey patching a generování ambientu z aktivací Qwen2.5 pomocí PyTorch forward hooks. Uvádí se kód pro zachycení neuronálních stavů a DSP modulace. Přístup pro vytvoření unikátního audio bez textových promptů.

Generování zvuku z „myšlenek“ AI bez promptů
Advertisement 728x90

Zachycení aktivací LLM pro generování audia prostřednictvím PyTorch Hooks

V experimentu PaleoSonic Engine se vizuální patche ze SigLIP přímo převádějí na audio latenty MusicGen. Namísto standardního pipeline Image -> Text -> Audio se používá lineární vrstva nn.Linear k projekci 196 patche o velikosti 196 do zvukových vektorů. Modely jsou převedeny do bfloat16 pro práci v 16 GB RAM.

Klikový krok – monkey patching textového enkodéru MusicGen. Generátor očekává 196 tokenů textu, ale přijímá geometrii obrazu. Náhodná inicializace mostu dává syrový zvuk: ostrý šum, napodobující srážku architektur bez dotrénování.

# Uchováváme původní 'mozek'
original_text_encoder = self.audio_decoder.text_encoder.forward

# Vytváříme třídu-podvrh
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):
    # Podstrkujeme vizuální tenzory místo textu!
    return VisualThoughts(audio_conditioning)
    
# Infikujeme generátor
self.audio_decoder.text_encoder.forward = spoofed_text_encoder

Tento přístup odhaluje syrový převod pixelové geometrie na akustiku, obcházejíc sémantiku textu.

Google AdInline article slot

PyTorch Hooks pro extrakci 'myšlenek' LLM v reálném čase

Ve druhém experimentu Neural-Analog Engine Qwen2.5-1.5B-Instruct ovládá DSP-oscillátor. Forward hook je registrován na 15. vrstvě modelu – centru abstraktních reprezentací. Aktivace se detachují, konvertují na float32 a komprimují průměrováním po ose batche.

neural_activations = []

# Funkce-špion pro zachycení myšlenek
def steal_thoughts_hook(module, input, output):
    # Bereme aktuální stav neuronů
    current_thought = output[0].detach().cpu().to(torch.float32).numpy()
    compressed_thought = np.mean(current_thought, axis=1)[0] 
    neural_activations.append(compressed_thought)

# Vsouváme 'stříkačku' do 15. vrstvy Qwen
hook_handle = model.model.layers[15].register_forward_hook(steal_thoughts_hook)

Syrové vektory jsou podávány na vstup numpy-oscillátoru a scipy-filtrů. LLM generuje prompt jako "Ticho zmrzlé kvantové hvězdy", ale zvuk je modulován pulsací aktivací: frekvence, fáze, útlum jsou určeny neuronálními hodnotami. Výsledek – čistý dark ambient bez neuronových audio generátorů.

Technické detaily cross-modálního propojení

  • Vision Backbone: google/siglip-base-patch16-224 vydává 196 patche po self-attention.
  • Audio Target: facebook/musicgen-small očekává text_encoder s hidden_state [1, 196, dim].
  • Most: nn.Linear(196dim_vision, 196dim_audio) s random init; bez fine-tuning pro zachování 'špíny'.
  • Hook Mechanics: register_forward_hook zachycuje output po MLP ve vrstvě 15; detach zabraňuje gradientům.
  • DSP Pipeline: np.sin pro oscillátory + scipy.signal.butter pro low-pass filtry; modulace amplitudy od aktivací.

Rozdíly ve zvuku:

Google AdInline article slot
  • PaleoSonic – chaotický šum od kolize latentů.
  • Neural-Analog – strukturovaný ambient od fyzických vln.

Škálování a optimalizace pro production

Oba přístupy fungují v Spaces Hugging Face. Pro škálu:

  • Použijte torch.compile pro urychlení hooks.
  • Kvantizujte Qwen na 4-bit s bitsandbytes pro snížení paměti.
  • Paralelizujte aktivace přes DataParallel na několika GPU.

Potenciál: integrujte do real-time audio (JACK/WASAPI) pro live-performances. Experimentujte s jinými vrstvami – rané dávají nízkoúrovňové rysy, pozdní – sémantiku.

Co je důležité

  • Monkey patching obchází generate() bez přeškolení, nahrazuje encoder za běhu.
  • Forward hooks v PyTorch – standard pro interpretovatelnost; detach je povinný pro inference.
  • Komprese aktivací (mean axis=1) snižuje dimenzionalitu bez ztráty dynamiky.
  • bfloat16 kritické pro low-RAM; vyhněte se float16 na CPU.
  • DSP na numpy/scipy rychlejší než torch.nn pro jednoduché oscillátory.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Číst dál