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.
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:
- 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
Zatím žádné komentáře.