Torna al catalogo
Season 18 21 Episodi 1h 25m 2026

AlphaFold: Protein Structure Prediction

v3.0 — Edizione 2026. Una guida pratica ad AlphaFold (v3.0 - Edizione 2026), che tratta il problema del ripiegamento delle proteine, l'architettura AI, l'uso dei database, le API programmatiche, modelli specializzati come AlphaFold-Multimer e AlphaMissense, il deployment locale, l'introduzione di AlphaFold 3 e le tecniche di scaling delle prestazioni.

Calcolo Scientifico Predizione della Struttura Proteica Deep Learning per la Scienza
AlphaFold: Protein Structure Prediction
In Riproduzione
Click play to start
0:00
0:00
1
Il problema del ripiegamento delle proteine
Esploriamo la grande sfida cinquantennale del ripiegamento delle proteine e perché è importante per gli ingegneri del software. Scopri cosa sono le proteine e perché la loro struttura 3D ne determina la funzione biologica.
4m 27s
2
Dentro AlphaFold 2: Panoramica dell'architettura
Un'analisi approfondita dell'architettura della rete neurale di AlphaFold 2. Esaminiamo il blocco Evoformer, i Multiple Sequence Alignments (MSA) e le Pair Representations.
3m 47s
3
Valutare le previsioni: pLDDT e PAE
Come si fa a sapere se una struttura proteica generata dall'AI è accurata? Impara a interpretare il pLDDT per la confidenza locale e il PAE per il posizionamento globale dei domini.
4m 01s
4
L'AlphaFold Protein Structure Database
Prima di eseguire enormi pipeline computazionali, controlla se la tua proteina è già stata risolta. Esploriamo l'enorme AlphaFold Database ospitato dall'EMBL-EBI.
4m 06s
5
Automatizzare la scoperta: L'API dell'AlphaFold Database
Scopri come creare workflow programmatici automatizzati per recuperare strutture proteiche su larga scala utilizzando l'API dell'AlphaFold Database.
4m 37s
6
Prevedere le strutture con ColabFold
Scopri ColabFold, un'alternativa più veloce per l'inferenza di AlphaFold che sostituisce Jackhmmer con MMseqs2 per un allineamento delle sequenze fulmineo.
3m 50s
7
AlphaFold-Multimer: Prevedere i complessi proteici
Le proteine raramente agiscono da sole. Scopri come AlphaFold-Multimer prevede le interazioni e le strutture 3D di complessi assemblaggi proteici.
3m 51s
8
AlphaMissense: Prevedere la patogenicità delle varianti
Esplora AlphaMissense, un modello specializzato che prevede se il cambiamento di una singola lettera nella sequenza di una proteina causerà una malattia.
4m 11s
9
Eseguire il deployment locale di AlphaFold 2
Prendi il controllo della tua infrastruttura eseguendo il deployment locale della pipeline open-source di AlphaFold 2 utilizzando Docker ed enormi database genetici.
4m 24s
10
Introduzione ad AlphaFold 3: Oltre le proteine
AlphaFold v3.0 cambia radicalmente il panorama modellando DNA, RNA, ligandi e ioni, dipingendo un quadro completo dell'ambiente cellulare.
3m 49s
11
AlphaFold Server: Il gateway per AF3
Metti le mani su AlphaFold v3.0 utilizzando l'AlphaFold Server, una GUI basata sul web che elimina la necessità di hardware locale e configurazioni complesse.
3m 57s
12
Interpretare i risultati di AlphaFold 3
La valutazione delle previsioni di AlphaFold v3.0 richiede nuove metriche. Impara a interpretare i clash score e le confidenze degli acidi nucleici.
4m 30s
13
La pipeline di inferenza di AlphaFold 3
Scopri come orchestrare la pipeline open-source di AlphaFold v3.0, gestire gli input JSON ed eseguire l'applicazione containerizzata.
4m 03s
14
Data Pipelines e requisiti hardware
Padroneggia la separation of concerns in AlphaFold v3.0 disaccoppiando la data pipeline, che grava sulla CPU, dal motore di inferenza, che grava sulla GPU.
3m 46s
15
Il collo di bottiglia della memoria: Attention O(n³)
Analizziamo il paper di ricerca di FastFold per capire perché il modulo Evoformer di AlphaFold causa catastrofici errori di Out-of-Memory su sequenze lunghe.
3m 59s
16
Dynamic Axial Parallelism (DAP)
Scopri come l'architettura di FastFold risolve i limiti di memoria di AlphaFold dividendo le attivazioni intermedie su più GPU utilizzando il Dynamic Axial Parallelism.
4m 09s
17
AutoChunk: Ottimizzare la memoria per sequenze lunghe
Il memory chunking manuale è noioso. Esploriamo l'algoritmo AutoChunk dal paper di FastFold, che ottimizza automaticamente il partizionamento dei tensori durante l'inferenza.
3m 50s
18
Superare lo squilibrio di comunicazione
Il distributed training è afflitto dagli straggler. Scopri come l'architettura di ScaleFold riprogetta la data pipeline di AlphaFold per evitare che i nodi CPU lenti blocchino i cluster di GPU.
4m 09s
19
Kernel Fusion e ottimizzazione GPU
AlphaFold lancia oltre 150.000 kernel CUDA separati per step. Esploriamo come il paper di ScaleFold utilizza Triton di OpenAI per fondere LayerNorm e Multi-Head Attention.
3m 56s
20
Costruire una pipeline ad alto throughput
Dalla valutazione asincrona dei pesi del modello allo sfruttamento dei CUDA graph, scopri i segreti dell'architettura di sistema per eseguire AlphaFold su scala massiccia.
4m 08s
21
Il futuro: Flow-Matching con SimpleFold
Abbiamo davvero bisogno di architetture complesse e specifiche per il dominio per il ripiegamento delle proteine? Esploriamo SimpleFold, un modello sperimentale che utilizza transformer standard e flow-matching.
4m 04s

Episodi

1

Il problema del ripiegamento delle proteine

4m 27s

Esploriamo la grande sfida cinquantennale del ripiegamento delle proteine e perché è importante per gli ingegneri del software. Scopri cosa sono le proteine e perché la loro struttura 3D ne determina la funzione biologica.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Previsione della struttura proteica, episodio 1 di 21. Per cinquant'anni, gli scienziati sono stati in grado di leggere il testo grezzo del nostro DNA, ma non potevano prevedere cosa quel testo avrebbe effettivamente costruito. Avevano il source code della vita, ma non avevano idea di come venisse compilato nelle macchine fisiche che fanno funzionare le nostre cellule. Questa grande sfida è nota come il problema del protein folding. Le proteine sono le macchine molecolari che ti mantengono in vita. Gestiscono quasi tutto ciò che accade all'interno del tuo corpo, dal trasporto dell'ossigeno nel sangue alla lotta contro le infezioni. Ogni proteina inizia la sua vita come una string unidimensionale. Questa string è composta da un vocabolario di venti diversi mattoni chimici chiamati amminoacidi. Pensa alla sequenza di amminoacidi come al raw source code della biologia. È una string lineare di caratteri, letta in sequenza. Ma una linea retta di amminoacidi non può svolgere alcun lavoro effettivo. Proprio come un file plain text deve essere compilato in un binario eseguibile per girare, la sequenza unidimensionale di amminoacidi deve ripiegarsi in una forma tridimensionale ben precisa. Nel mondo biologico, la forma determina completamente la funzione. I contorni fisici di una proteina stabiliscono con cosa può interagire. Una proteina ripiegata a forma di tasca potrebbe catturare e scomporre una specifica molecola di zucchero. Una proteina ripiegata a forma di tubo rigido potrebbe fungere da supporto strutturale per una cellula. Se il processo di folding va storto, il programma biologico crasha. Negli esseri umani, le proteine con un folding errato sono la causa principale di molte gravi malattie. La sequenza di amminoacidi contiene tutte le istruzioni necessarie per formare questa precisa struttura tridimensionale. I diversi amminoacidi hanno proprietà chimiche diverse. Alcuni portano cariche positive o negative e si comportano come magneti. Alcuni respingono l'acqua e cercano di nascondersi al centro della struttura, mentre altri sono attratti dall'acqua e spingono verso l'esterno. Queste forze fisiche in competizione fanno sì che la string si aggrovigli, si attorcigli e scatti in un'unica configurazione stabile. Ecco l'intuizione chiave. La matematica alla base di questo processo di folding è sbalorditiva. Una tipica chain proteica è composta da centinaia di amminoacidi. Il numero di modi possibili in cui una chain così lunga potrebbe piegarsi è circa dieci alla trecento. Uno scienziato di nome Cyrus Levinthal ha fatto notare che se una proteina provasse sequenzialmente ogni possibile forma per trovare quella corretta, il processo richiederebbe più tempo dell'età dell'universo. Eppure, all'interno delle tue cellule, una nuova string proteica scatta nella sua forma corretta in pochi millisecondi. Il problema del protein folding è il tentativo di colmare questo divario. È la sfida di prendere come unico input una sequenza unidimensionale di amminoacidi e prevedere computazionalmente la sua struttura tridimensionale finale. Storicamente, gli scienziati dovevano affidarsi a lente tecniche fisiche di laboratorio per mappare queste strutture. Metodi come la cristallografia a raggi X prevedevano di congelare le proteine in cristalli e sparargli contro dei fasci per misurare gli angoli della luce diffusa. Trovare la struttura di una singola proteina poteva richiedere anni di meticolosi tentativi ed errori. Poiché la tecnologia di sequenziamento genetico ha superato la mappatura fisica, la comunità scientifica ha accumulato centinaia di milioni di sequenze unidimensionali note, ma ha mappato le strutture 3D solo di una piccolissima frazione di esse. Avevamo infinite righe di source code, ma nessun decompiler in grado di mostrarci la logica di esecuzione. Risolvere il problema del protein folding computazionalmente ci fornisce gli esatti progetti meccanici della biologia, trasformando la scoperta di farmaci da un lento processo di tentativi alla cieca in laboratorio a un'ingegneria precisa e mirata. Se apprezzi il podcast e vuoi supportare lo show, puoi cercare DevStoriesEU su Patreon. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a costruire!
2

Dentro AlphaFold 2: Panoramica dell'architettura

3m 47s

Un'analisi approfondita dell'architettura della rete neurale di AlphaFold 2. Esaminiamo il blocco Evoformer, i Multiple Sequence Alignments (MSA) e le Pair Representations.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 2 di 21. Vuoi prevedere la forma fisica di una singola sequenza proteica, ma guardare solo quella sequenza non basta. Per capire come si ripiega, devi esaminare il suo albero genealogico evolutivo per individuare pattern sincronizzati di mutazioni nel corso di milioni di anni. Capire come un algoritmo elabora questi pattern evolutivi è esattamente ciò di cui parliamo in Inside AlphaFold 2: Architecture Overview. L'architettura funziona come un flusso continuo di dati, trasformando una string di lettere di amminoacidi in una forma 3D. Tutto inizia con la sequenza target. Prima di qualsiasi elaborazione da parte della rete neurale, AlphaFold cerca in enormi database biologici per raccogliere due input specifici basati su quella sequenza. Il primo input è il Multiple Sequence Alignment, o MSA. Si tratta di una raccolta di sequenze proteiche simili provenienti da altri organismi. Se due amminoacidi in una sequenza mutano costantemente insieme in diverse specie, è probabile che si tocchino fisicamente nella struttura ripiegata finale. Il secondo input è costituito dai template strutturali. Si tratta di strutture 3D note di proteine altamente simili alla tua sequenza target. Questi MSA e template grezzi entrano direttamente nell'Embedding layer. L'Embedding layer traduce questi dati biologici in due formati matematici distinti che la rete neurale può elaborare. Questi sono la MSA representation e la Pair representation. La MSA representation è una matrice che contiene la storia evolutiva delle mutazioni. La Pair representation è una griglia bidimensionale astratta che traccia la potenziale distanza e la relazione fisica tra ogni possibile coppia di amminoacidi nella sequenza. Una volta create, entrambe le rappresentazioni entrano nello stack Evoformer. L'Evoformer è il motore di AlphaFold 2, ed è composto da 48 blocchi di elaborazione distinti. Ecco il punto chiave. All'interno di ciascun blocco, la MSA representation e la Pair representation comunicano tra loro. Si scambiano informazioni per affinare i rispettivi dati. Se i dati evolutivi nella MSA representation suggeriscono fortemente che due amminoacidi interagiscono, questa aggiorna la Pair representation per avvicinarli sulla griglia astratta delle distanze. Al contrario, se la Pair representation si rende conto che posizionare due amminoacidi vicini viola i vincoli dello spazio fisico, aggiorna la MSA representation per rivalutare quel legame evolutivo. Questa comunicazione incrociata avviene continuamente man mano che i dati fluiscono attraverso tutti i 48 blocchi, producendo una mappa estremamente accurata delle relazioni interne. Spesso si pensa che l'Evoformer generi la forma fisica finale, ma non è così. L'Evoformer costruisce solo rappresentazioni matematiche astratte di distanze e legami evolutivi. Restituisce in output matrici di dati altamente raffinate, non un oggetto fisico. Per ottenere la forma ripiegata effettiva, i dati escono dal 48° blocco dell'Evoformer ed entrano nello Structure Module. Lo Structure Module prende la Pair representation raffinata e i dati della sequenza originale, e traduce quella griglia astratta in vere e proprie coordinate atomiche 3D. Assegna una posizione X, Y e Z precisa nello spazio a ogni atomo del backbone della proteina e delle sue catene laterali. Il successo di AlphaFold 2 si basa sull'Evoformer, che forza continuamente la storia evolutiva e i vincoli spaziali a coincidere tra loro prima ancora che venga tracciata una singola coordinata 3D. Per questo episodio è tutto. Grazie per l'ascolto, e continua a sviluppare!
3

Valutare le previsioni: pLDDT e PAE

4m 01s

Come si fa a sapere se una struttura proteica generata dall'AI è accurata? Impara a interpretare il pLDDT per la confidenza locale e il PAE per il posizionamento globale dei domini.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 3 di 21. La feature più potente di un model di AI non è sempre il suo output, ma la sua capacità di dirti esattamente quando sta tirando a indovinare. Se guardi un model proteico predetto e presumi che ogni loop e dominio sia posizionato perfettamente nella realtà, i tuoi esperimenti a valle probabilmente falliranno. Per usare davvero questi model in modo sicuro, devi capire come valutare le prediction: pLDDT e PAE. AlphaFold restituisce in output due metriche distinte per quantificare la sua incertezza. La prima è il pLDDT, che sta per predicted Local Distance Difference Test. Questo valuta la confidence locale. Per ogni singolo residuo amminoacidico nella proteina, AlphaFold assegna uno score tra 0 e 100. Questo score ti dice quanto il network è sicuro della struttura locale del backbone. Quando un residuo ha uno score sopra il 90, sei di fronte a una confidence molto alta. A questo livello, anche gli orientamenti delle side-chain sono di solito affidabili. Uno score tra 70 e 90 rappresenta comunque una prediction del backbone buona e affidabile. Quando lo score scende sotto il 70, la confidence inizia a vacillare. Ecco il punto chiave. Quando vedi uno score pLDDT sotto il 50, il tuo primo istinto potrebbe essere che il model ha fallito nel trovare il fold giusto. Di solito, questo è sbagliato. Uno score pLDDT molto basso indica spesso una regione intrinsecamente disordinata. La proteina fisicamente non ha una struttura fissa in isolamento. Potrebbe essere un linker flessibile o una coda che fa folding solo quando si lega a un'altra molecola. L'AI non sta fallendo; sta predicendo accuratamente che questo pezzo della proteina è naturalmente flessibile. Anche se il pLDDT è eccellente per i fold locali, ha un enorme punto cieco. Valuta le regioni in isolamento. Prendi una proteina con due domini strutturali completamente separati, connessi da una lunga stringa di amminoacidi. Fai girare la prediction, controlli il pLDDT e vedi che entrambi i domini hanno uno score sopra il 90. Le loro strutture interne sono solide. Tuttavia, il pLDDT non può dirti se quei due domini sono posizionati correttamente l'uno rispetto all'altro nello spazio tridimensionale. Per risolvere questo problema, AlphaFold fornisce una seconda metrica chiamata Predicted Aligned Error, o PAE. Questa metrica valuta la posizione relativa dei domini. Il PAE misura l'errore di distanza atteso tra due qualsiasi residui specifici nella proteina. La logica pone una semplice domanda: se allineiamo perfettamente la prediction alla struttura reale sul residuo X, di quanti Ångström sarà fuori posizione il residuo Y? Questo ti dà una griglia bidimensionale di errori pairwise. Tornando allo scenario della proteina a due domini, se controlli il PAE tra i residui all'interno del primo dominio, l'errore sarà molto basso. Lo stesso vale all'interno del secondo dominio. Ma se controlli il PAE tra un residuo nel dominio uno e un residuo nel dominio due, l'errore potrebbe essere molto alto. Un PAE alto tra i domini significa che il loro orientamento relativo è completamente incerto. Il model sa esattamente che aspetto hanno le due forme separate, ma non ha idea a che angolo si trovino l'una rispetto all'altra. Devi valutare entrambe le metriche insieme per capire il quadro completo. Usi il pLDDT per fidarti del folding locale e per identificare le regioni di disordine naturale. Ti affidi al PAE per verificare se la disposizione globale complessiva di quelle distinte parti foldate è effettivamente fissa, o solo un guess spaziale dell'algoritmo. Non trattare mai una struttura predetta come un'unica verità rigida; trattala come una mappa di probabilità in cui ogni dominio e linker porta con sé la propria prova di affidabilità. Grazie per aver passato qualche minuto con me. Alla prossima, stammi bene.
4

L'AlphaFold Protein Structure Database

4m 06s

Prima di eseguire enormi pipeline computazionali, controlla se la tua proteina è già stata risolta. Esploriamo l'enorme AlphaFold Database ospitato dall'EMBL-EBI.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 4 di 21. Fare il training di un modello di machine learning rivoluzionario è impressionante, ma per un biologo che lavora sul campo, una rete neurale raw è solo un altro tool pesante da configurare. Per cambiare davvero il settore, non ti limiti a pubblicare il modello. Lo usi per fare il folding di quasi tutte le proteine conosciute sulla Terra, e metti i risultati online gratis. Questo è l'AlphaFold Protein Structure Database. Costruito in partnership tra Google DeepMind ed EMBL-EBI, questo database contiene oltre 200 milioni di strutture predette. Questo numero enorme rappresenta quasi l'intero universo proteico conosciuto. Invece di configurare l'hardware e far girare l'algoritmo AlphaFold da solo, bypassi completamente il compute e fai una query sulle predizioni già completate. Pensa al workflow per usare l'interfaccia web. Se stai studiando il recettore degli acidi grassi liberi 2, vai su alphafold punto ebi punto ac punto uk e scrivi quel nome nella barra di ricerca. Puoi cercare per nome del gene o per sequenza, ma il metodo più preciso è usare un numero di accesso UniProt. Dato che il database mappa direttamente su UniProt, ogni struttura è strettamente collegata ai metadati biologici esistenti. Quando selezioni il tuo target dai risultati, atterri sulla entry page specifica per quella proteina. Questa è la parte che conta. La feature centrale della entry page è un viewer 3D interattivo, ma non ti mostra solo la geometria fisica. Rappresenta visivamente la confidence interna del modello in quella geometria. AlphaFold assegna uno score alla propria accuratezza per ogni singolo amminoacido usando una metrica chiamata pLDDT. Il viewer 3D colora il modello fisico basandosi esattamente su questi score. Il blu scuro indica una confidence molto alta nella struttura. Il blu chiaro indica una buona confidence. Il giallo significa confidence bassa, e l'arancione significa confidence molto bassa. Quando ruoti il recettore degli acidi grassi liberi 2 nel browser, vedrai delle strutture elicoidali nitide e blu scuro dove la proteina attraversa la membrana cellulare. Ma le code libere che penzolano alle estremità potrebbero essere di un arancione acceso. Quelle regioni arancioni raramente sono dei fallimenti dell'algoritmo. Di solito sono regioni intrinsecamente disordinate, cioè parti della proteina che non possiedono una forma fissa nella realtà biologica. Visualizzare la struttura nel browser va bene per un rapido sanity check, ma il vero lavoro computazionale richiede i dati raw. Sotto il viewer, troverai la sezione di download. Puoi scaricare le coordinate 3D nel formato standard PDB o nel moderno formato mmCIF. Trascini questi file direttamente nel tuo software di modellazione locale per misurare le distanze o simulare le interazioni molecolari. Insieme ai file delle coordinate, devi scaricare anche i dati del Predicted Aligned Error. Questo viene fornito come un semplice file JSON. Mentre i colori nel viewer 3D ti dicono se un pezzo locale della proteina è accurato, il file JSON del PAE ti dice se le posizioni relative di due pezzi diversi sono accurate. Contiene una matrice di margini di errore per le distanze tra ogni coppia di residui. Se la tua proteina ha due domini blu solidi separati da una cerniera flessibile, i dati JSON ti diranno se puoi effettivamente fidarti dell'angolo tra di loro. L'AlphaFold Protein Structure Database cambia completamente il tuo workflow. Non passi più giorni a cercare di predire una struttura; passi pochi minuti a cercarla, e il tuo vero lavoro diventa interpretare le metriche di confidence allegate al download. Questo è tutto per questo episodio. Grazie per aver ascoltato, e continua a sviluppare!
5

Automatizzare la scoperta: L'API dell'AlphaFold Database

4m 37s

Scopri come creare workflow programmatici automatizzati per recuperare strutture proteiche su larga scala utilizzando l'API dell'AlphaFold Database.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 5 di 21. La bioinformatica nel mondo reale non si fa cliccando manualmente sui pulsanti di download in un web browser. Quando devi analizzare centinaia di proteine, costruisci delle pipeline automatizzate e scalabili. Questo ci porta ad Automating Discovery: l'API dell'AlphaFold Database. Sai che il database contiene milioni di predizioni strutturali, ma visualizzare una proteina alla volta su un sito web è impraticabile per i progetti di grandi dimensioni. Se stai eseguendo un'analisi comparativa su un'intera famiglia di enzimi, o lo screening di target per una pipeline di drug discovery, hai bisogno che quelle strutture vengano scaricate direttamente nel tuo ambiente di calcolo. L'AlphaFold Database fornisce una REST API per risolvere esattamente questo collo di bottiglia. Permette al tuo codice di fare query sul database e recuperare programmaticamente i dati strutturali senza intervento umano. La primary key per questa automazione è l'ID UniProt. Puoi pensare a un ID UniProt come al codice a barre universale per qualsiasi proteina. La tua pipeline in genere inizia con una lista di questi ID. Usando una libreria HTTP standard in Python, invii una request all'API chiedendo i dati di predizione associati a uno specifico codice a barre. Questa è la parte che conta. Quando fai quella request, l'API non ti restituisce un file enorme pieno di coordinate atomiche tridimensionali. Servire file pesanti tramite una chiamata API sincrona è lento e fragile. Invece, l'API restituisce un manifest. Questo manifest è una response leggera che descrive esattamente quali risorse sono disponibili per la proteina che hai richiesto. Concettualmente, questo manifest ti fornisce i metadati biologici e una directory di link per il download diretto. Punta ai file effettivi della struttura 3D in formati standard del settore. Cosa fondamentale, fornisce anche i link alle metriche di confidenza, come il Predicted Aligned Error, o matrice PAE. Hai bisogno di entrambi. In una pipeline automatizzata, scaricare la struttura è solo metà del lavoro. Devi scaricare anche i dati PAE, in modo che i tuoi algoritmi di downstream sappiano quali parti della proteina hanno un'alta confidenza e quali parti sono flessibili. Vediamo come scorre questa logica in un tipico script Python. Imposti un loop per iterare sulla tua lista di ID UniProt. All'interno del loop, fai la tua network request per il primo ID. Prima di fare qualsiasi altra cosa, controlli l'HTTP status code. Non tutte le sequenze proteiche esistenti hanno una struttura AlphaFold precalcolata. Se richiedi una proteina non mappata, il database restituisce un errore standard 404 not found. Il tuo script deve fare il catch di questo errore in modo pulito, loggare l'ID mancante e continuare con l'iterazione successiva. Se ignori gli status code e provi a fare il parse di una response mancante, l'intero batch job crasherà alla prima proteina non supportata. Quando la request ha successo, il tuo script legge il manifest restituito. Scrivi la logica per estrarre gli specifici link di download che ti interessano, che di solito sono il file delle coordinate primarie e il corrispondente file della matrice degli errori. Il tuo script fa quindi delle HTTP request secondarie a quegli specifici link, facendo lo streaming dei dati pesanti direttamente sul tuo local storage o cloud bucket. Separando la query dal download, l'API mantiene la fase iniziale di discovery incredibilmente veloce. Puoi verificare rapidamente la disponibilità di migliaia di proteine, costruire una lista validata di link, e poi gestire il download pesante in bulk. Il vero valore dell'API di AlphaFold è che rimuove il collo di bottiglia umano, trasformando un vasto database statico in un componente completamente programmabile della tua architettura di ricerca. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
6

Prevedere le strutture con ColabFold

3m 50s

Scopri ColabFold, un'alternativa più veloce per l'inferenza di AlphaFold che sostituisce Jackhmmer con MMseqs2 per un allineamento delle sequenze fulmineo.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 6 di 21. Quando esegui una previsione della struttura proteica, la rete neurale è raramente il bottleneck. La vera attesa avviene prima ancora che il modello parta, portandoti via ore della giornata solo per cercare nei database genetici. Prevedere le strutture con ColabFold cambia completamente le cose. La pipeline standard di AlphaFold si basa su un tool chiamato Jackhmmer. Jackhmmer scansiona enormi database locali da svariati terabyte per trovare i parenti evolutivi della tua proteina target. Questa ricerca costruisce il Multiple Sequence Alignment, o MSA. L'MSA è l'input fondamentale che dice ad AlphaFold quali parti della proteina probabilmente interagiranno in base alla storia evolutiva. Tuttavia, generare questo allineamento in modo tradizionale richiede ore di compute e ti costringe a gestire enormi dataset sulla tua infrastruttura. ColabFold modifica questa pipeline puntando proprio a quel bottleneck specifico. Sostituisce Jackhmmer con un algoritmo di ricerca diverso, chiamato MMseqs2. MMseqs2 è fortemente ottimizzato per la ricerca di sequenze ad alta velocità. Ma ColabFold fa un passo in più rispetto al semplice scambio di algoritmi. Invece di farti eseguire MMseqs2 e i relativi database sulla tua macchina locale, ColabFold fa l'offload completo di questo step. Prende la tua sequenza di input e la invia a un server MMseqs2 pubblico e dedicato tramite un'API. Questo server si occupa del lavoro pesante. Cerca nei propri database gestiti centralmente e restituisce l'MSA finito direttamente al tuo environment. Questo cambio architetturale significa che non hai affatto bisogno di storage locale per i database. È esattamente per questo che puoi eseguire ColabFold in modo efficace all'interno di un Jupyter Notebook ospitato su servizi cloud come Google Colab o UCloud. Il setup non richiede praticamente alcuna infrastruttura. Apri il notebook e incolli la tua sequenza di amminoacidi. Potrebbe essere una proteina wild-type, o una sequenza mutata custom con cui stai sperimentando. Quando esegui il notebook, l'esecuzione avviene in due fasi distinte. Per prima cosa, il tuo environment cloud fa una veloce chiamata API al server MMseqs2 remoto. Il server calcola l'allineamento e rimanda l'MSA al tuo notebook. Questo riduce un processo che normalmente richiede ore a pochi minuti, o addirittura secondi. Ora entra in gioco la seconda parte di questo workflow. Il tuo notebook passa l'MSA recuperato alla rete neurale di AlphaFold. È qui che avviene la vera e propria predizione del folding. A differenza della ricerca nel database, questo step di inferenza viene eseguito localmente all'interno della tua istanza cloud. Utilizza la GPU associata alla tua sessione Google Colab o UCloud per calcolare le coordinate spaziali della struttura proteica. Dato che la lenta ricerca nel database viene esternalizzata e accelerata, il tuo tempo di iterazione complessivo si riduce drasticamente. Ottieni la predizione della rete neurale altamente accurata che ti aspetti da AlphaFold, ma la ottieni velocemente. Se devi testare come una specifica mutazione puntiforme altera la forma fisica di una proteina, ti basta modificare una singola lettera nella tua variabile di sequenza, eseguire di nuovo la cella e valutare il nuovo output. Ecco il punto chiave. ColabFold dimostra che, facendo il decoupling completo della ricerca di allineamento data-heavy dall'inferenza della rete neurale, puoi portare tool di biologia strutturale di livello mondiale in un normale browser web. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
7

AlphaFold-Multimer: Prevedere i complessi proteici

3m 51s

Le proteine raramente agiscono da sole. Scopri come AlphaFold-Multimer prevede le interazioni e le strutture 3D di complessi assemblaggi proteici.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 7 di 21. Predire una singola proteina è come indovinare la forma di un pezzo di puzzle isolato. Ma in biologia, le proteine raramente agiscono da sole. Se inserisci due sequenze casuali in un modello di predizione standard, spesso le appiccicherà semplicemente insieme nello spazio tridimensionale, indipendentemente dal fatto che si leghino effettivamente in natura. Per capire come più pezzi flessibili si incastrano realmente tra loro, hai bisogno di un tool diverso. Questo è AlphaFold-Multimer. AlphaFold standard è ottimizzato per singole chain polipeptidiche. AlphaFold-Multimer è una versione retrained del sistema, progettata specificamente per predire i complessi proteici. È addestrato per riconoscere e modellare sia le interfacce omomeriche, dove più copie della stessa proteina si legano tra loro, sia le interfacce eteromeriche, dove interagiscono proteine completamente diverse. Quando fornisci più sequenze ad AlphaFold-Multimer, restituirà sempre un complesso predetto. La sfida cruciale è determinare se quell'interfaccia predetta è una reale interazione biologica o una collisione forzata artificiale. Il modello fa quello che gli chiedi, quindi posizionerà le chain una accanto all'altra. Per risolvere il problema delle false interazioni, AlphaFold-Multimer introduce una metrica di confidence specializzata chiamata interface predicted Template Modeling score, o ipTM. I confidence score standard valutano quanto bene si ripiega un pezzo localizzato di una chain. Lo score ipTM ignora completamente la struttura interna delle singole proteine. Invece, misura l'accuratezza delle posizioni relative delle chain. Valuta specificamente la confidence nell'interfaccia in cui le proteine si incontrano. Considera uno scenario in cui stai predicendo un complesso anticorpo-antigene a due chain. Passi al modello la sequenza amminoacidica dell'anticorpo e la sequenza dell'antigene target. Il sistema restituisce in output una struttura contenente entrambe le molecole. Per prima cosa, controlli i confidence score locali standard per ogni chain. Potrebbero essere molto alti, indicando che il modello sa esattamente come si ripiegano l'anticorpo isolato e l'antigene isolato. Fai attenzione a questa parte. Puoi avere singole chain perfettamente ripiegate con uno score ipTM vicino a zero. Se l'ipTM è basso, il modello ti sta dicendo che, anche se le forme sono corrette, non ha idea di come si connettano. Ha semplicemente parcheggiato le due strutture ripiegate una accanto all'altra perché hai fornito due sequenze. L'interfaccia non ha senso. Tuttavia, se lo score ipTM è alto, in genere qualsiasi valore sopra lo zero virgola otto, il modello è sicuro dell'interazione. Un ipTM alto significa che il sistema ha trovato prove strutturali ed evolutive che queste specifiche superfici si incastrano. Il modello non le sta semplicemente forzando insieme; sta predicendo un vero e proprio evento di legame. Per classificare gli output finali, AlphaFold-Multimer calcola un confidence score combinato. Questa metrica combinata è fortemente sbilanciata verso l'interfaccia, in genere prendendo l'ottanta percento dello score ipTM e aggiungendo il venti percento dello score strutturale complessivo. Il modello con lo score combinato più alto viene restituito come la tua predizione migliore. L'accuratezza strutturale delle singole chain non garantisce un'interazione valida. L'interface predicted Template Modeling score è la metrica determinante per dimostrare che il modello ha scoperto un vero complesso biologico, anziché limitarsi a soddisfare una richiesta di raggruppare due sequenze. Questo è tutto per questo episodio. Grazie per l'ascolto e continua a sviluppare!
8

AlphaMissense: Prevedere la patogenicità delle varianti

4m 11s

Esplora AlphaMissense, un modello specializzato che prevede se il cambiamento di una singola lettera nella sequenza di una proteina causerà una malattia.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 8 di 21. Un singolo typo in una sequenza di migliaia di amminoacidi può fare la differenza tra la salute e una grave malattia genetica. Ma quando sequenzi il genoma di un paziente e trovi una nuova mutazione, come fai a sapere se è la root cause o solo un innocuo rumore biologico? AlphaMissense fornisce una risposta matematica proprio a questo problema. Una variante missenso è una mutazione genetica in cui il cambio di una singola lettera del DNA porta a sostituire un amminoacido con un altro nella proteina finale. Il genoma umano medio contiene migliaia di queste varianti. Molte sono completamente benigne. Alterano una parte periferica della proteina senza intaccarne la funzione complessiva. Altre distruggono completamente la proteina, portando a gravi patologie genetiche. Separare le varianti pericolose da quelle innocue è un enorme bottleneck nella genetica clinica. AlphaMissense è un model costruito appositamente per classificare questi effetti. Dobbiamo chiarire subito un malinteso comune. AlphaMissense non prevede i cambiamenti strutturali in 3D causati da una mutazione. Non restituisce in output un nuovo file che mostra la forma deformata della proteina. Invece, sfrutta il contesto strutturale ed evolutivo già appreso dal network di AlphaFold per calcolare una probabilità. Restituisce in output uno score di patogenicità continuo che va da zero a uno. Questo score rappresenta la probabilità che una specifica mutazione causi una malattia. Prendi uno scenario concreto. Stai analizzando il genoma di un paziente e isoli una nuova sostituzione di un singolo amminoacido in un gene critico. Una valina ha sostituito un'alanina in posizione 142. Il paziente è malato, ma questa esatta mutazione non è mai stata documentata nella letteratura medica. Devi sapere se questa sostituzione è patogena. Fai una query al database di AlphaMissense per questa specifica variante. Under the hood, il model valuta la conservazione evolutiva di quella precisa posizione esaminando allineamenti multipli di sequenze. Verifica se la natura ha tollerato cambiamenti in questa posizione nel corso di milioni di anni di evoluzione. Valuta anche il contesto strutturale. Un amminoacido strettamente impacchettato nel core idrofobico della proteina è molto più sensibile ai cambiamenti rispetto a uno che fluttua liberamente sulla superficie esterna. AlphaMissense elabora questi segnali evolutivi e strutturali per restituirti lo score. Uno score vicino a zero indica che la variante è probabilmente benigna. La proteina probabilmente fa il folding e funziona normalmente. Uno score vicino a uno la flagga come probabilmente patogena. La sostituzione quasi certamente compromette la stabilità o la funzione della proteina. Per rendere questi dati actionable, il model applica delle soglie predefinite. Gli score che superano la soglia superiore sono classificati come probabilmente patogeni. Gli score sotto la soglia inferiore sono probabilmente benigni. Tutto ciò che cade nella fascia intermedia è classificato come ambiguo. Questa classificazione ti permette di filtrare istantaneamente il rumore genomico. Invece di progettare costosi e lunghi esperimenti di laboratorio per testare ogni variante sconosciuta nel genoma del paziente, puoi concentrare immediatamente le tue risorse cliniche sulle poche mutazioni che AlphaMissense flagga con uno score elevato. Ecco l'insight chiave. Il vero impatto di questo tool è la sua scala. AlphaMissense non aspetta le query. Ha già calcolato lo score di patogenicità per tutte le 71 milioni di possibili sostituzioni di singoli amminoacidi nell'intero proteoma umano, catalogando i risultati prima ancora che un paziente metta piede in clinica. Se apprezzi il podcast e vuoi contribuire a mantenerlo attivo, puoi supportarci cercando DevStoriesEU su Patreon. Questo è tutto per questo episodio. Grazie per l'ascolto e continua a sviluppare!
9

Eseguire il deployment locale di AlphaFold 2

4m 24s

Prendi il controllo della tua infrastruttura eseguendo il deployment locale della pipeline open-source di AlphaFold 2 utilizzando Docker ed enormi database genetici.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 9 di 21. Potresti pensare che l'ostacolo maggiore per prevedere le strutture proteiche sia trovare una GPU abbastanza potente. Ma il vero bottleneck è lo storage. Prima di fare il folding di un singolo amminoacido, devi interrogare enormi database evolutivi da svariati terabyte. Questo episodio copre il deploy di AlphaFold 2 in locale. Far girare AlphaFold sul tuo hardware ti garantisce una privacy rigorosa per le sequenze proprietarie e rimuove i limiti di tempo di esecuzione che trovi sui server pubblici. DeepMind fornisce il codice open-source direttamente su GitHub. Per usarlo, devi prima replicare l'esatto ambiente di riferimento genetico che il modello usa per trovare sequenze simili. Questo richiede di scaricare copie locali di database pubblici come BFD, MGnify, UniRef90 e PDB70. Messi insieme, questi database non compressi consumano circa tre terabyte di storage. Immagina un ingegnere DevOps che fa il provisioning di un nuovo nodo High Performance Computing per un team di ricerca. Il primissimo requisito è un drive da tre terabyte. Qui non puoi usare dischi meccanici lenti ed economici. Ti serve uno storage NVMe veloce. Cercare tra milioni di sequenze genetiche genera operazioni di read su disco aggressive. Se il tuo storage è lento, l'intera pipeline si blocca prima ancora che i dati raggiungano la rete neurale. Ecco il punto chiave. La pipeline locale di AlphaFold consiste in due fasi di compute distinte, e richiedono profili hardware completamente diversi. La fase uno genera il Multiple Sequence Alignment, o MSA. Il sistema cerca nei tuoi terabyte di database locali usando tool bioinformatici esterni. Questa fase usa esattamente zero cicli della GPU. Il bottleneck è interamente sui core della CPU, sulla memoria di sistema e sulla velocità del disco. La fase due è l'inference strutturale vera e propria. È qui che la rete neurale prende il controllo per generare le coordinate 3D, e questa fase richiede rigorosamente una GPU con molta VRAM. Se fai il provisioning di un nodo con una GPU enorme ma una CPU debole, il tuo job di predizione rimarrà bloccato per ore nella fase di allineamento. Gestire le dipendenze software per entrambe queste fasi è notoriamente difficile. Devi allineare versioni specifiche di CUDA, Jax e dei tool di allineamento delle sequenze. Per risolvere questo problema, il repository ufficiale si affida pesantemente a Docker. La containerization assicura che questo complesso ambiente di runtime rimanga isolato e coerente su diversi sistemi operativi. Il setup del deploy prevede due script principali. Per prima cosa, esegui uno script bash fornito per scaricare i dati. Lo punti verso il tuo drive NVMe e lo lasci girare. A seconda della tua connessione di rete, il fetch e l'estrazione di questi file possono richiedere alcuni giorni. Una volta che i dati risiedono sul tuo storage veloce, sei pronto per l'esecuzione. Controlli la pipeline usando uno script wrapper Python fornito, chiamato run docker dot py. Esegui questo script dal terminale, passandogli alcuni argomenti obbligatori. Fornisci il path al file FASTA di input che contiene la tua sequenza di amminoacidi target. Fornisci il path alla directory del tuo database multi-terabyte. Specifichi una directory di output. Infine, imposti una data massima di rilascio del template, che impedisce al modello di usare template strutturali noti pubblicati dopo un momento specifico nel tempo. Il wrapper Python prende questi argomenti e fa la build del container Docker. Monta le directory del tuo host locale all'interno del container come volumi, permettendo al software isolato di leggere i tuoi database e scrivere i file di output sul tuo disco. Il container poi prende il controllo, orchestrando automaticamente la ricerca di allineamento CPU-heavy e il processo di inference GPU-heavy. Fare il deploy di AlphaFold in locale è fondamentalmente una sfida di infrastruttura, che ti richiede di bilanciare la velocità del disco per la fase di allineamento CPU-heavy con una VRAM adeguata per la fase di folding GPU-heavy. Grazie per aver passato qualche minuto con me. Fino alla prossima volta, stammi bene.
10

Introduzione ad AlphaFold 3: Oltre le proteine

3m 49s

AlphaFold v3.0 cambia radicalmente il panorama modellando DNA, RNA, ligandi e ioni, dipingendo un quadro completo dell'ambiente cellulare.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 10 di 21. Per anni, se volevi vedere come un potenziale farmaco interagiva con una proteina target, dovevi eseguire la tua sequenza, generare una struttura proteica e poi usare un software completamente separato per eseguire il docking computazionale del farmaco. Stavi forzando una sostanza chimica rigida in un modello rigido. AlphaFold 3 cambia completamente le cose, eseguendo il folding di tutto insieme contemporaneamente. Oggi presentiamo AlphaFold 3: Oltre le proteine. Le versioni precedenti di AlphaFold erano concentrate esclusivamente sulla previsione della struttura delle proteine basata sulle loro sequenze di amminoacidi. Erano eccezionalmente brave a farlo, ma i veri sistemi biologici non funzionano come proteine nude che fluttuano nel vuoto. Le proteine interagiscono con il DNA per attivare e disattivare i geni. Si affidano agli ioni metallici per catalizzare le reazioni. Vengono bloccate o attivate da piccole molecole di farmaci. Prima di questo aggiornamento, modellare queste interazioni complesse richiedeva una pipeline frammentata. Prima prevedevi la struttura proteica, poi magari modellavi il DNA separatamente, e infine cercavi di calcolare come si incastrassero fisicamente. Questo approccio sequenziale ha un grosso difetto. Presuppone che la struttura della proteina sia statica. In realtà, le proteine cambiano forma dinamicamente quando si legano ad altre molecole. Ecco l'intuizione chiave. AlphaFold 3 passa dall'essere un semplice tool di protein folding a un predittore generalizzato di complessi biomolecolari. Espande il suo vocabolario nativo oltre gli amminoacidi per includere tre categorie di molecole completamente nuove. Primo, ora supporta gli acidi nucleici, il che significa che puoi passare in input sequenze sia di DNA che di RNA. Secondo, comprende nativamente i ligandi a piccole molecole, che coprono la stragrande maggioranza dei farmaci. Terzo, supporta l'inclusione di ioni essenziali che spesso si trovano al centro delle proteine funzionali. Invece di prevedere questi componenti in isolamento, AlphaFold 3 prevede simultaneamente la struttura congiunta di tutte queste entità molecolari distinte. Calcola le interazioni tra ogni atomo dell'intero complesso in un'unica passata. Pensa a come questo cambia uno scenario di modellazione standard. Non stai più guardando un target isolato. Ora puoi definire un input che contiene una sequenza proteica, uno specifico filamento di DNA e la definizione chimica di un piccolo farmaco inibitore. Il sistema li valuta insieme. L'output risultante mostra la proteina che afferra attivamente il filamento di DNA, mentre la piccola molecola del farmaco è perfettamente incastrata nella tasca di legame. Dato che il folding di tutto è avvenuto nello stesso spazio computazionale, il modello della proteina riflette automaticamente i cambiamenti strutturali causati sia dal DNA che dal farmaco. Questo non è semplicemente il vecchio engine di AlphaFold con un algoritmo di docking incollato alla fine. È un'architettura del modello completamente distinta, addestrata direttamente su come diverse classi di molecole biologiche interagiscono nello spazio fisico. Il cambiamento più significativo con AlphaFold 3 è che non stai più generando parti biologiche isolate, ma stai predicendo macchine molecolari complete e interagenti, esattamente come esistono nel mondo fisico. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
11

AlphaFold Server: Il gateway per AF3

3m 57s

Metti le mani su AlphaFold v3.0 utilizzando l'AlphaFold Server, una GUI basata sul web che elimina la necessità di hardware locale e configurazioni complesse.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 11 di 21. Non hai più bisogno di una laurea in ingegneria o di un supercomputer per far girare l'AI biomolecolare più avanzata al mondo. La barriera all'ingresso si è abbassata a un semplice web browser. Questo è l'AlphaFold Server, il tuo gateway diretto ad AlphaFold 3. Storicamente, lanciare previsioni di struttura complesse significava gestire le software dependencies, scaricare terabyte di database genetici e mantenere GPU potenti. L'AlphaFold Server bypassa tutto questo. È un'interfaccia web completamente grafica che permette a biologi e chimici di lanciare job di AlphaFold 3 senza scrivere una singola riga di codice. Tutti i multiple sequence alignment, il template searching e il diffusion-based folding avvengono da remoto su un'infrastruttura di calcolo condivisa. Prima di analizzare una previsione, dobbiamo chiarire due limiti rigorosi. Primo, l'AlphaFold Server è esclusivamente per uso non commerciale. Secondo, dato che si basa sulle risorse di calcolo fornite, il tuo account è soggetto a limiti giornalieri di job. Non puoi usarlo per fare brute-force su una pipeline di screening massiva. È progettato per un design sperimentale mirato e single-job. Ecco come costruire un job di previsione complesso e multi-chain nell'interfaccia. L'intero workflow ruota attorno all'aggiunta di entità separate a un workspace condiviso. Inizia con la tua proteina principale. Clicchi sul pulsante per aggiungere un'entità proteina. Appare un campo di testo. Incolli semplicemente la tua sequenza di aminoacidi a una lettera direttamente in quel box. Se ti aspetti che questa proteina formi un omodimero, non hai bisogno di incollare la sequenza due volte. Ti basta cambiare l'impostazione del copy number a due, e il sistema gestisce la stechiometria. Ora, la seconda parte consiste nell'aggiungere le molecole interagenti. Supponiamo che tu voglia vedere come quella proteina si lega a uno specifico segmento di DNA. Clicchi per aggiungere un'entità DNA e incolli la sequenza per il forward strand. Per costruire la vera e propria doppia elica, aggiungi un'altra entità DNA e incolli la sequenza reverse complement. AlphaFold 3 li modellerà insieme nello stesso spazio tridimensionale, prevedendo sia il base pairing del DNA che la sua interfaccia strutturale con la tua proteina. Qui la cosa si fa interessante per i componenti non polimerici. Il server supporta nativamente ligandi, ioni e cofattori. Se la tua proteina richiede uno specifico ione metallico per stabilizzare il suo folding, clicchi per aggiungere un'entità ione. Non devi cercare identificatori chimici complessi o scrivere string SMILES per i componenti standard. Il server fornisce un dropdown menu integrato. Ti basta cercare uno ione comune, selezionare Magnesio o Zinco, definire quante copie ti servono, e l'interfaccia lo fissa. Una volta che il tuo workspace contiene la sequenza della proteina, i due strand di DNA e lo ione selezionato, premi il pulsante di submit. Questo è l'intero setup. Dietro le quinte, il server prende il controllo. Gestisce le pipeline di allineamento, dà in pasto i dati alla rete neurale di AlphaFold 3 ed esegue il processo di structural diffusion. Quando il job è completato, i risultati si caricano direttamente nel tuo browser. Hai a disposizione un viewer 3D embedded per ispezionare immediatamente il complex predetto. Cosa ancora più importante, ottieni un pacchetto pulito da scaricare, che contiene i file delle coordinate atomiche predette e tutte le confidence metric associate per la tua analisi in locale. La vera potenza del server non è solo l'accesso immediato al modello, ma la pura velocità di iterazione che offre quando testi ipotesi strutturali. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a costruire!
12

Interpretare i risultati di AlphaFold 3

4m 30s

La valutazione delle previsioni di AlphaFold v3.0 richiede nuove metriche. Impara a interpretare i clash score e le confidenze degli acidi nucleici.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 12 di 21. Prevedere esattamente come un nuovo farmaco si lega a una proteina target sembra una vera svolta, finché non ti rendi conto che l'AI ha semplicemente posizionato due atomi di carbonio solidi nello stesso identico spazio fisico. Una struttura splendidamente renderizzata è inutile se sfida le leggi della fisica. Oggi parliamo di come interpretare i risultati di AlphaFold 3, per aiutarti a separare gli insight biologici dalle allucinazioni computazionali. AlphaFold 3 genera un file di coordinate tridimensionali insieme a un set di metriche specifiche. Valutare un risultato richiede di leggere queste metriche insieme, perché uno score alto in un'area può mascherare un fallimento catastrofico in un'altra. Per prima cosa, guardi la local confidence usando una metrica chiamata pLDDT. Questa valuta ogni singolo atomo o residuo su una scala da zero a cento. Uno score alto significa che il modello è molto sicuro della specifica geometria locale di quella chain. Ma la local confidence da sola non basta. Puoi avere una proteina e un ligando small molecule predetti perfettamente, che fluttuano in modo indipendente nello spazio. Per sapere se interagiscono davvero, devi controllare il Predicted Aligned Error, o PAE. Il PAE misura l'errore di posizione atteso in Angstrom. Numeri più bassi sono migliori. Quando predici complessi, come una proteina che si lega a un filamento di DNA o a una molecola di un farmaco, ti concentri sul cross-PAE. Pensa all'output del PAE come a una matrice heat map. La diagonale mostra quanto il modello è confident sulla struttura interna di una singola chain. Le aree off-diagonal mostrano la confidence tra entità diverse. Se il PAE tra la tua proteina e il tuo ligando è basso, AlphaFold è molto confident nelle loro posizioni relative. Crede fermamente che il ligando si trovi esattamente in quella specifica pocket. Ecco l'insight chiave. Un'alta confidence non significa automaticamente realtà fisica. AlphaFold 3 è un modello di deep learning, non un simulatore di dinamica molecolare. Dà priorità ai pattern spaziali riconosciuti rispetto alla fisica rigorosa. Questo ci porta al clash score. Dato che AlphaFold 3 modella direttamente ligandi, acidi nucleici e residui modificati senza uno step di relaxation basato rigorosamente sulla fisica, gli output possono contenere gravi steric clashes. Un clash si verifica quando a due atomi vengono assegnate coordinate che li posizionano impossibilmente vicini, sovrapponendoli di fatto. Il server calcola e fornisce un clash score per il tuo output. Un clash score alto è un'enorme red flag. Immagina uno scenario in cui analizzi un output e la chain proteica principale ha un pLDDT superiore a 90. Il cross-PAE tra la proteina e il tuo target ligand è molto basso. Le metriche di interfaccia suggeriscono un evento di binding forte e confident. Sulla carta, sembra una prediction di docking perfetta. Poi controlli il clash score ed è molto elevato. Se carichi le coordinate fisiche in un viewer, vedrai il ligando passare dritto attraverso il backbone della proteina. La rete neurale ha riconosciuto che il ligando appartiene a quella binding pocket generale, ma non è riuscita a instradare gli atomi attorno alle side chain esistenti. Ha allucinato una molecola fantasma che ignora la materia solida. Quando valuti un risultato di AlphaFold 3, devi controllare simultaneamente la structural confidence e il realismo fisico. Usa il pLDDT per verificare la forma delle singole molecole. Usa il PAE per confermare che interagiscono dove ti aspetti. Poi, controlla il clash score per assicurarti che il modello non abbia violato la chimica di base per forzare quell'interazione. Ricorda che un modello di deep learning restituisce in output un'ipotesi spaziale basata sul pattern recognition, quindi una prediction altamente confident è valida solo se gli atomi rispettano effettivamente le leggi della fisica. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a costruire!
13

La pipeline di inferenza di AlphaFold 3

4m 03s

Scopri come orchestrare la pipeline open-source di AlphaFold v3.0, gestire gli input JSON ed eseguire l'applicazione containerizzata.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Previsione della struttura proteica, episodio 13 di 21. DeepMind ha reso open-source il suo ultimo modello di biologia strutturale, ma se cloni il repository e provi a eseguirlo, fallirà immediatamente. Il codice è completamente pubblico, ma la rete neurale che guida le previsioni è strettamente controllata. Oggi diamo un'occhiata alla Inference Pipeline di AlphaFold 3 e a come gestire il suo deploy. Per eseguire AlphaFold 3 in locale, devi unire due componenti separati: il codice di esecuzione e i parametri del modello. Il repository ti fornisce la logica della pipeline. Per i parametri, in particolare i weights della versione 3.0.1, devi richiedere l'accesso separatamente. Google ti richiede di inviare un modulo che descriva in dettaglio il tuo use case di ricerca non commerciale. Una volta approvata la tua richiesta, ricevi un link per scaricare i pesanti weights del modello. Questo approccio separato consente a DeepMind di limitare l'uso commerciale, permettendo comunque ai ricercatori di ispezionare ed eseguire la pipeline open-source sul proprio hardware. Dopo aver scaricato i weights, il tuo passo successivo è definire cosa vuoi che il modello preveda. Le versioni precedenti di AlphaFold gestivano principalmente singole chain di proteine, quindi potevi semplicemente passare una semplice string di testo di amminoacidi. AlphaFold 3 modella interazioni complesse tra diversi tipi di molecole, quindi una semplice string non è più sufficiente. Invece, devi creare un file di configurazione. Questo file funge da manifest completo per il tuo target biologico. Specifichi le molecole esatte coinvolte nel tuo esperimento. Potrebbe trattarsi di una proteina standard, di un filamento di DNA o RNA, o di uno specifico ligando a piccola molecola. In questo stesso file di configurazione, definisci anche i seed di casualità. Poiché la nuova architettura del modello si basa su un processo di diffusione per generare la struttura tridimensionale finale, introdurre lievi variazioni nel random seed produce diversi possibili stati strutturali. Definendo più seed nella tua configurazione, istruisci la pipeline a generare previsioni distinte per lo stesso identico input. In questo file dichiari anche una versione del dialetto, che dice semplicemente al parsing engine di applicare le regole di validazione di AlphaFold 3 al tuo manifest. Con i tuoi weights scaricati e il tuo file di configurazione pronto, passi all'esecuzione. Poiché questa pipeline dipende da versioni molto specifiche di librerie di machine learning e driver della GPU, eseguirla direttamente sul tuo sistema operativo host è rischioso. Il workflow ufficiale si basa su Docker. Crei una container image direttamente dal repository fornito, assicurandoti l'ambiente perfetto. Per eseguire effettivamente l'inference, avvii questo container e lo connetti alla tua macchina host facendo il mount di tre percorsi fondamentali. Primo, fai il mount della cartella che contiene il tuo file di configurazione di input. Secondo, fai il mount della directory che contiene quegli enormi weights del modello approvati che hai scaricato prima. Infine, fai il mount di una directory vuota dove il container può scrivere i suoi risultati. Una volta che il container fa il boot, invochi il run script principale. La pipeline convalida il tuo manifest di input, carica i weights dalla tua directory montata nella memoria della GPU e inizia la previsione strutturale. Quando il processo finisce, la tua cartella di output montata conterrà le coordinate finali delle molecole che hai richiesto, formattate e pronte per la visualizzazione. La sfida principale di questa pipeline non è il codice sottostante, ma gestire la logistica per ottenere i weights del modello e strutturare meticolosamente il tuo file di configurazione per mappare interazioni biologiche complesse. Se ti va di supportare lo show, puoi cercare DevStoriesEU su Patreon. Questo è tutto per questo episodio. Grazie per l'ascolto e continua a sviluppare!
14

Data Pipelines e requisiti hardware

3m 46s

Padroneggia la separation of concerns in AlphaFold v3.0 disaccoppiando la data pipeline, che grava sulla CPU, dal motore di inferenza, che grava sulla GPU.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 14 di 21. L'errore più grande che gli ingegneri commettono quando fanno il deploy di AlphaFold è lasciare inattive le costose GPU in attesa che terminino le query di base del database. Fai il provisioning di una A100, avvii un job e guardi il tuo utilizzo rimanere piatto allo zero percento per ore. La soluzione è separare i tuoi ambienti di esecuzione, ed è esattamente ciò di cui parliamo oggi con Data Pipeline e requisiti hardware. AlphaFold tre esegue due tipi di lavoro fondamentalmente diversi. Primo, cerca in enormi database genetici per costruire Multiple Sequence Alignment e trovare template strutturali. Secondo, passa questi dati elaborati alla rete neurale per prevedere la struttura tridimensionale finale. La ricerca nel database è interamente CPU bound e limitata dalla velocità di lettura dello storage. La previsione della rete neurale richiede una GPU. Se esegui il setup di default, AlphaFold fa entrambi i passaggi in sequenza sulla stessa macchina. Questo significa che la tua costosa GPU non fa assolutamente nulla mentre la tua CPU passa ore a macinare terabyte di database di riferimento. Ecco il punto chiave. Il repository fornisce due flag di esecuzione specifici per disaccoppiare questi workload. Il primo flag è run data pipeline. Quando esegui lo script di run con questo flag abilitato e run inference disabilitato, AlphaFold esegue solo le ricerche genetiche e dei template. Legge la tua configurazione di input, fa le query sui database locali e genera tutte le feature di sequenza necessarie. Poi salva questo stato intermedio dei dati su disco. La cosa fondamentale è che questo passaggio richiede zero risorse GPU. Si affida strettamente a una macchina con molti core CPU e veloci drive a stato solido NVMe per gestire le pesanti operazioni di input e output. Una volta che la data pipeline ha finito di costruire le feature, usi il secondo flag. Esegui di nuovo lo script, ma imposti run data pipeline su false e run inference su true. AlphaFold salterà completamente la ricerca nel database. Carica direttamente i dati delle feature in cache che hai appena generato, inizializza i pesi del modello ed esegue il forward pass della rete neurale. Questo passaggio è completamente GPU bound. Si basa esclusivamente sul tuo acceleratore hardware e sulla sua memoria ad alta larghezza di banda. Questa separazione esplicita è il modo in cui progetti una vera infrastruttura enterprise. Invece di attaccare enormi drive di database a diverse macchine GPU costose, fai il provisioning di una flotta di nodi CPU convenienti. Distribuisci le tue richieste di predizione in ingresso su questi nodi CPU, usandoli per fare query aggressive sui database e generare allineamenti in parallelo. Ogni volta che un nodo CPU finisce un job della data pipeline, deposita i file delle feature risultanti su un sistema di storage condiviso. Nel frattempo, mantieni un singolo nodo altamente utilizzato con una potente GPU. Questa macchina esiste strettamente per l'inferenza. Monitora costantemente lo storage condiviso. Quando appare un nuovo file di feature, lo prende, esegue la predizione della rete neurale in pochi minuti, scrive la struttura molecolare finale e recupera immediatamente il file successivo. La tua GPU non aspetta mai più un collo di bottiglia dello storage o una ricerca nel database. Disaccoppiare la data pipeline CPU bound dall'inferenza GPU bound è il modo più efficace in assoluto per scalare la predizione della struttura proteica tenendo sotto controllo i costi hardware. Grazie per aver passato qualche minuto con me. Alla prossima, stammi bene.
15

Il collo di bottiglia della memoria: Attention O(n³)

3m 59s

Analizziamo il paper di ricerca di FastFold per capire perché il modulo Evoformer di AlphaFold causa catastrofici errori di Out-of-Memory su sequenze lunghe.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Previsione della struttura proteica, episodio 15 di 21. Il tuo modello proteico è sorprendentemente piccolo, con meno di cento milioni di parametri. Riesci a predire con successo la struttura di una sequenza di 500 residui su una GPU standard da 16 gigabyte, ma quando passi in input una sequenza di 1500 residui, il processo crasha all'istante con un errore di out of memory, richiedendo improvvisamente oltre 80 gigabyte di VRAM. Questo scaling catastrofico avviene a causa di una specifica caratteristica architetturale chiamata Memory Bottleneck: Attention O(n³). Secondo il paper FastFold di Cheng et al., questo consumo esplosivo di memoria non ha nulla a che fare con i weight del modello. L'intero modello AlphaFold contiene solo 93 milioni di parametri. Il bottleneck risiede interamente nelle activation intermedie generate durante il forward pass. Man mano che la lunghezza della sequenza aumenta, la memoria necessaria per salvare questi tensori intermedi scala in modo cubico. Per capire il perché, dobbiamo guardare dentro l'Evoformer. L'Evoformer è la struttura portante di AlphaFold, composta da 48 blocchi impilati. All'interno di ogni blocco, il modello si affida a un meccanismo di attention specializzato. I transformer standard, come quelli usati nei language model, di solito hanno meccanismi di attention in cui la memoria scala in modo quadratico rispetto alla lunghezza della sequenza. Questi confrontano una sequenza unidimensionale solo con se stessa. AlphaFold è diverso. Usa una rappresentazione intermedia bidimensionale per modellare le interazioni pair-wise tra gli amminoacidi. Ecco il punto chiave. Per predire con precisione le strutture proteiche tridimensionali, la rete non può limitarsi a guardare le coppie di residui prese singolarmente. Deve valutare le relazioni triangolari per assicurarsi che le distanze predette tra tre punti siano fisicamente possibili nello spazio tridimensionale. Per calcolare questo, il modulo di attention genera dei tensori di activation intermedi. Il memory footprint di questi tensori segue una formula precisa. È la lunghezza della sequenza al cubo, moltiplicata per il numero di attention head, moltiplicata per la dimensione in byte del data type. AlphaFold usa la precisione BFloat16, che occupa due byte per valore. Facciamo i conti per lo sviluppatore che ha fatto crashare la sua GPU. Quando passi in input al modello una sequenza di 500 residui, la lunghezza della sequenza è 500. Il cubo di 500 è 125 milioni. Se hai quattro attention head, moltiplichi 125 milioni per quattro, e poi per due byte per la precisione. Un singolo layer di attention crea circa un gigabyte di activation intermedie. La tua GPU da 16 gigabyte lo gestisce con ampio margine. Ora cambi l'input in una sequenza di 1500 residui. Hai solo triplicato la lunghezza dell'input. Ma poiché lo scaling è cubico, devi elevare al cubo 1500, il che dà oltre 3,3 miliardi. Moltiplica questo numero per quattro head e due byte, e quello stesso singolo layer di attention ora richiede quasi 27 gigabyte di memoria solo per salvare le sue activation. Dato che la rete fa passare questi dati attraverso 48 blocchi Evoformer consecutivi, la richiesta totale di memoria supera all'istante gli 80 gigabyte. I tensori si gonfiano così rapidamente che l'hardware semplicemente interrompe il processo. Ecco perché AlphaFold richiede una pesante ottimizzazione per le sequenze più lunghe. Il numero grezzo di parametri di una rete neurale non ti dice quasi nulla sui suoi requisiti hardware quando la geometria interna costringe i dati intermedi a crescere simultaneamente in tre dimensioni. Se vuoi supportare lo show, puoi cercare DevStoriesEU su Patreon. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
16

Dynamic Axial Parallelism (DAP)

4m 09s

Scopri come l'architettura di FastFold risolve i limiti di memoria di AlphaFold dividendo le attivazioni intermedie su più GPU utilizzando il Dynamic Axial Parallelism.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 16 di 21. Se un tensor intermedio è troppo grande per una singola GPU, l'istinto standard è quello di splittare i model parameters su più schede. Ma quando la tua rete neurale ha solo 93 milioni di parametri e i tuoi activation tensors consumano 20 gigabyte, splittare il modello non risolve nulla. Devi splittare la geometria dei dati stessi. Questo è esattamente ciò che risolve il Dynamic Axial Parallelism. Per capire perché esiste questo approccio, dobbiamo esaminare i bottleneck identificati nel paper di FastFold. Il motore principale di AlphaFold è il blocco Evoformer. Elabora multiple sequence alignments e pair representations, che essenzialmente funzionano come enormi griglie bidimensionali di dati. Il Tensor Parallelism standard cerca di gestire workload pesanti splittando i pesi dei linear layer su diverse GPU. Per AlphaFold, questo crea gravi inefficienze. Il Tensor Parallelism richiede una sincronizzazione frequente e pesante, che innesca fino a dodici step di comunicazione per blocco. Inoltre, si applica solo ai moduli di attention e feed-forward. Peggio ancora, il suo scaling è limitato dal numero di attention heads. Nel pair stack di AlphaFold, questo ti limita a un massimo di sole quattro GPU. Il Dynamic Axial Parallelism, o DAP, abbandona completamente l'approccio di weight-splitting. Invece, il DAP mantiene intatti tutti i model parameters su ogni singolo device. Il modello in sé non viene mai distribuito. Le intermediate activations sì. L'Evoformer elabora i dati lungo due sequence dimensions, ma le operazioni matematiche avvengono sempre e solo lungo una dimensione alla volta. Questo comportamento permette al DAP di dividere i dati in modo pulito lungo la dimensione inattiva. Puoi immaginartelo in un setup multi-GPU. Un'enorme griglia di sequence data entra nel layer. Il DAP splitta questo input orizzontalmente. La GPU zero prende il primo chunk di righe, la GPU uno prende il successivo, e così via. Ogni GPU calcola quindi l'attention per la sua specifica porzione di dati. Dato che ogni GPU possiede una copia completa dei model weights, e dato che il calcolo è isolato sull'asse orizzontale, le GPU non hanno bisogno di parlarsi tra loro. Calcolano i propri chunk in modo indipendente. Ecco il punto chiave. Una volta terminato quel calcolo orizzontale, il modello deve elaborare i dati lungo la sequence dimension verticale. Per farlo, le GPU eseguono uno step di comunicazione all-to-all. Traspongono la geometria dei dati attraverso il network. La GPU zero fa lo scatter dei frammenti della sua colonna agli altri device e fa il gather dei pezzi che le servono per la fase successiva. L'orientamento dello split si inverte. Ora i dati sono splittati verticalmente su tutto il cluster. Le GPU eseguono immediatamente il layer successivo di calcoli di attention, di nuovo con zero cross-talk durante i calcoli veri e propri. Questa strategia di trasposizione riduce il volume di comunicazione di un intero ordine di grandezza rispetto al Tensor Parallelism standard. Inoltre, abilita il parallelismo in ogni singolo modulo computazionale dell'Evoformer. Dato che gli enormi activation tensors sono distribuiti uniformemente sul cluster, il consumo complessivo di memoria si riduce drasticamente, impedendo ai singoli device di crashare sotto il peso di lunghe sequenze. Quando il tuo bottleneck hardware è dettato dalle mere dimensioni fisiche delle intermediate representations piuttosto che dalla profondità della rete neurale, non frammenti l'architettura. Distribuisci gli assi dei dati. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
17

AutoChunk: Ottimizzare la memoria per sequenze lunghe

3m 50s

Il memory chunking manuale è noioso. Esploriamo l'algoritmo AutoChunk dal paper di FastFold, che ottimizza automaticamente il partizionamento dei tensori durante l'inferenza.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 17 di 21. E se il tuo compiler fosse abbastanza intelligente da fare lo slice automatico dei calcoli matriciali in modo da rientrare perfettamente nel budget di memoria del tuo hardware? Immagina un ingegnere che passa giorni a fare profiling e slicing manuale del codice per evitare errori di Out of Memory. Ogni volta che la lunghezza della sequenza cambia, gli slice fissi falliscono. Confrontalo con un sistema che stima dinamicamente il memory footprint e genera codice partizionato al volo. AutoChunk è l'algoritmo che rende tutto questo possibile. Nel paper di FastFold, i ricercatori hanno affrontato gli enormi bottleneck di memoria dovuti all'esecuzione di sequenze lunghe nei modelli di predizione proteica. L'approccio standard per evitare di andare in Out of Memory è il chunking. Partizioni un tensor lungo dimensioni che non interagiscono durante il calcolo, processi questi blocchi più piccoli in sequenza e li rimetti insieme. Di solito, questo è un processo manuale e laborioso. Fai il profiling del codice, ipotizzi le dimensioni migliori per gli slice e fai l'hardcode dei limiti. Il paper di FastFold fa notare che gli schemi di chunking fissi sono inefficienti, perché non riescono ad adattarsi alle diverse dimensioni delle sequenze o agli spike di memoria di specifiche operazioni. Ecco l'intuizione chiave. I ricercatori di FastFold hanno osservato che il 95 percento delle operazioni nel modello usa meno del 20 percento della peak memory. Il chunking a livello di modulo è del tutto superfluo. Ti basta fare il chunking solo delle operazioni specifiche che causano gli spike di memoria. AutoChunk automatizza tutto questo analizzando il tuo codice come un computational graph. Prende in input quel graph e il budget di memoria specifico del tuo hardware. In parole povere, l'algoritmo esegue un loop continuo. Finché c'è ancora bisogno di una strategia di memoria, stima il consumo di memoria del graph per trovare il singolo node con l'utilizzo più alto. Un node, in questo contesto, è un'operazione di base, come un'addizione o una proiezione lineare. Una volta individuato quel node di peak memory, AutoChunk determina il chunk range massimo possibile estendendosi verso l'esterno a partire da esso. Lo calcola controllando tutti i node attivi che in quel momento mantengono dati in memoria. Successivamente, identifica ogni possibile chunk strategy all'interno di quel range, facendo il tracing delle dimensioni del tensor verso l'alto attraverso il graph. Una dimensione può subire il chunking solo se è una free dimension, il che significa che non avviene alcuna computazione su di essa durante quello specifico range di operazioni. Dato che fare il tracing di ogni output verso l'alto è computazionalmente costoso, AutoChunk utilizza una ricerca a due stadi. Lo stage uno verifica se i node di inizio e fine di un range soddisfano le regole di chunking. Se lo fanno, lo stage due esegue una verifica approfondita per tutti i node intermedi. Dopo aver mappato le possibilità, AutoChunk seleziona la strategia che mantiene la memoria rigorosamente sotto il budget, minimizzando al contempo la penalità sulla velocità di esecuzione. Infine, l'algoritmo esce dal loop e passa le strategie scelte a un code generator, inserendo la logica di partizionamento ottimale direttamente nel graph. Non devi più fare l'hardcode degli slice di matrice sperando che reggano in produzione. Il sistema analizza lo stato della memoria attiva e scrive la logica di partizionamento al posto tuo. Il takeaway più utile è che il chunking non dovrebbe mai essere un'impostazione statica a livello di modulo; isolando e partizionando solo le specifiche operazioni outlier che causano gli spike di peak memory, puoi processare sequenze molto più lunghe senza distruggere la velocità di esecuzione. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
18

Superare lo squilibrio di comunicazione

4m 09s

Il distributed training è afflitto dagli straggler. Scopri come l'architettura di ScaleFold riprogetta la data pipeline di AlphaFold per evitare che i nodi CPU lenti blocchino i cluster di GPU.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 18 di 21. Avvii un enorme cluster da svariati milioni di dollari con mille GPU per fare il training del tuo modello, ma la tua utilization crolla a zero. Il tuo intero distributed ring si blocca perché una singola macchina ha pescato una sequenza evolutiva estremamente complessa e ha bisogno di 100 secondi per generare un allineamento. Superare il communication imbalance è il modo in cui risolvi questo esatto bottleneck. Il problema di fondo qui è noto come straggler problem. Nel distributed training, ogni GPU nel tuo cluster elabora un batch locale di dati. Alla fine di un training step, tutte le GPU devono raggiungere un synchronization point per condividere i loro gradienti. Il tuo cluster si muove solo alla velocità della sua macchina in assoluto più lenta. Come dettagliato nel paper ScaleFold di Zhu et al., la preparazione dei training batch per il protein folding è altamente variabile. Alcune sequenze di amminoacidi sono brevi e semplici. Altre richiedono enormi allineamenti multi-sequenza, impiegando fino a tre ordini di grandezza in più per la preparazione. Un batch veloce richiede una frazione di secondo. Un batch lento richiede 100 secondi. Se usi il dataloader di default di PyTorch, genera i batch in un ordine rigido e deterministico. Se uno dei worker del tuo dataloader si blocca a preparare una sequenza enorme, il processo di training aspetta che quel batch specifico finisca. Anche se altri worker hanno già finito di preparare i batch successivi, la pipeline resta bloccata. Il tuo training step finisce, la tua GPU locale va in idle e, siccome non può raggiungere il synchronization point, le altre 999 GPU nel tuo cluster rimangono completamente in idle ad aspettarla. Gli autori di ScaleFold hanno risolto questo problema costruendo una Non-Blocking Data Pipeline. Invece di imporre una sequenza rigida, la pipeline restituisce un batch nel momento esatto in cui un qualsiasi batch in elaborazione diventa pronto. Ecco l'intuizione chiave. Il sistema disaccoppia l'ordine di preparazione dei dati dall'ordine di consumo dei dati usando una priority queue. Per prima cosa, assegni più worker del dataloader per preparare i batch in modo asincrono. Quando un worker riceve un batch da elaborare, il sistema tagga quel batch con il suo index di sequenza originale. Questo index diventa il suo priority score. Seguiamo la logica. Il worker uno riceve il batch A, una sequenza veloce. Il worker due riceve il batch B, la sequenza da 100 secondi. Il worker tre riceve il batch C, un'altra sequenza veloce. Il worker uno finisce il batch A immediatamente e fa il push nella priority queue. Il processo di training lo consuma ed esegue uno step. Il worker due sta ancora macinando l'enorme batch B. Nel sistema di default, la GPU si fermerebbe ad aspettare. Ma in questa non-blocking pipeline, il worker tre finisce il batch C e fa il push nella priority queue. Dato che il batch B non è ancora pronto, la queue passa semplicemente il batch C al processo di training. Le GPU continuano il training senza pause. Alla fine, il worker due finisce il batch B e fa il push nella queue. Siccome il batch B ha un index originale precedente, la priority queue lo posiziona immediatamente in cima alla fila. Il processo di training lo consuma nello step immediatamente successivo. Questo meccanismo di priorità garantisce un sample ordering in best-effort. L'esatta sequenza globale dei dati cambia leggermente tra i diversi training run, ma il paper conferma che questo non ha un impatto negativo sulla training convergence. Elimini l'idle time causato dai picchi di utilizzo della CPU in background e dai data sample complessi. Il data batch più lento non determina più la velocità di esecuzione della tua macchina più veloce. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
19

Kernel Fusion e ottimizzazione GPU

3m 56s

AlphaFold lancia oltre 150.000 kernel CUDA separati per step. Esploriamo come il paper di ScaleFold utilizza Triton di OpenAI per fondere LayerNorm e Multi-Head Attention.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Previsione della struttura proteica, episodio 19 di 21. A volte la GPU non è davvero lenta a fare i calcoli. Passa semplicemente tutto il tempo ad aspettare che la CPU le passi l'istruzione successiva, lasciando il tuo profiler pieno di enormi spazi vuoti. La soluzione a questo problema è la Kernel Fusion e la GPU Optimization. Secondo il paper di ScaleFold, il training del modello AlphaFold richiede il lancio di oltre 150.000 singole operazioni per ogni step. La maggior parte di questi sono kernel memory-bound, come piccoli LayerNorm o operazioni element-wise frammentate. Ogni volta che la CPU dice alla GPU di eseguire un'operazione PyTorch, c'è un launch overhead. Quando concateni 150.000 piccole operazioni, quell'overhead eclissa completamente i calcoli veri e propri. Guarda la Multi-Head Attention di AlphaFold, che occupa circa il trentaquattro percento del tempo totale dello step di training. Non è una attention standard. AlphaFold aggiunge uno specifico termine di pair bias alla matrice dei logits subito prima dell'operazione di softmax. Nel PyTorch di default, questo crea una chain di eventi separati. Per prima cosa, lanci un kernel per la batched matrix multiplication. La GPU legge i dati dalla global memory, fa i calcoli e scrive il risultato. Poi, la CPU lancia un secondo kernel per aggiungere il pair bias. La GPU rilegge la matrice dalla memoria, aggiunge il bias e la riscrive. Infine, parte un terzo kernel per la softmax. Questo continuo round-trip verso la global memory lascia a secco la GPU. Gli autori del paper ScaleFold risolvono il problema scrivendo dei custom kernel usando il compiler OpenAI Triton. Invece di step separati, fondono l'intera sequenza in un singolo kernel. Ecco l'intuizione chiave. Fondendo le operazioni, la GPU carica i dati di input nella sua veloce SRAM on-chip una volta sola. Esegue la matrix multiplication, aggiunge il pair bias, applica la softmax e fa la moltiplicazione finale direttamente dentro la SRAM. Scrive nella global memory solo quando l'intero blocco di Multi-Head Attention è finito. Le librerie ottimizzate standard come FlashAttention qui non funzionano a causa di quella particolare injection del pair bias, rendendo un custom kernel Triton strettamente necessario per aggirare il bottleneck della memory bandwidth. Questo approccio si estende ad altre parti frammentate del modello. LayerNorm consuma il quattordici percento del tempo dello step perché AlphaFold usa dimensioni piccole, tipicamente 128 o 256. Quando usi il Dynamic Axial Parallelism, o DAP, le dimensioni di questi problemi vengono scalate ancora di più, lasciando l'hardware sottoutilizzato. ScaleFold introduce un fused kernel per la LayerNorm dove un singolo thread block CUDA elabora più righe di input contemporaneamente. Calcola le statistiche di normalizzazione in un singolo pass invece di usare costosi metodi iterativi, e usa una two-step reduction nel backward pass per evitare le atomic operations. Anche l'optimizer viene fuso. Gli autori di ScaleFold hanno combinato l'optimizer Adam e la Stochastic Weight Averaging in un unico singolo kernel. I valori intermedi tra gli step dell'optimizer restano nei registri della GPU, bypassando completamente le letture in memoria. Per il resto del modello, si affidano ai tool del compiler di PyTorch per fondere automaticamente le restanti operazioni frammentate, in particolare nei componenti seriali come lo Structure Module. Quando hai a che fare con migliaia di piccole operazioni memory-bound, il tuo bottleneck non sono i teraflops, è la memory bandwidth e il launch overhead della CPU. Fondere queste operazioni in singoli blocchi di esecuzione continui è l'unico modo per saturare davvero l'hardware. Grazie per l'ascolto, buon coding a tutti!
20

Costruire una pipeline ad alto throughput

4m 08s

Dalla valutazione asincrona dei pesi del modello allo sfruttamento dei CUDA graph, scopri i segreti dell'architettura di sistema per eseguire AlphaFold su scala massiccia.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 20 di 21. Scalare un modello di AI da 128 a 2.000 GPU non significa solo comprare più hardware; richiede di riprogettare completamente come respira il sistema. Quando aggiungi tutto questo compute, scopri enormi colli di bottiglia nel modo in cui le tue macchine host comunicano con gli acceleratori. Risolvere questi colli di bottiglia richiede la creazione di una pipeline ad alto throughput, ed è esattamente così che i ricercatori hanno recentemente ridotto il pretraining di AlphaFold da sette giorni a sole dieci ore. Il progetto per questa architettura arriva dal paper di ScaleFold. Gli autori hanno identificato una brutale realtà legata allo scaling. Man mano che distribuisci un modello su migliaia di GPU, il carico di lavoro matematico per ogni singola GPU si riduce. Le GPU finiscono i loro calcoli così in fretta che la CPU non riesce a inviare nuove istruzioni al kernel abbastanza velocemente da tenerle occupate. L'overhead della CPU diventa il collo di bottiglia principale. Per risolvere il problema, rimuovi la CPU dal loop di esecuzione usando i CUDA Graph. Un CUDA Graph cattura una sequenza di operazioni GPU e le relative allocazioni di memoria in un singolo grafo statico. Una volta catturato, la GPU esegue l'intero grafo direttamente, senza aspettare che la CPU faccia il dispatch di ogni singolo kernel. Ecco l'intuizione chiave. Non puoi semplicemente applicare i CUDA Graph standard ad AlphaFold. L'architettura di AlphaFold usa un meccanismo di recycling, che reinserisce dinamicamente le predizioni nel modello. Questo crea un computation graph dinamico. Se le operazioni cambiano, un CUDA Graph standard si rompe e deve essere catturato di nuovo, rovinando il guadagno di performance. Il paper di ScaleFold risolve questo problema progettando una cache per i CUDA Graph. Invece di un singolo grafo rigido, il sistema cattura e salva diversi grafi che rappresentano i vari scenari di recycling. Quando l'esecuzione dinamica cambia, il sistema recupera semplicemente il grafo precompilato corretto dalla cache. La CPU viene completamente bypassata. Ora, il secondo pezzo di questa architettura ad alto throughput. Una volta che il tempo del tuo step di training è altamente ottimizzato, compare un nuovo collo di bottiglia. In una pipeline standard, i nodi di training si mettono in pausa periodicamente per calcolare le metriche di validazione. Secondo il paper di ScaleFold, man mano che i tempi degli step si riducono, questa fase di evaluation può consumare fino al 43% del tempo totale della pipeline. Il tuo enorme e costoso cluster di training rimane in idle per quasi metà del tempo solo per controllare il proprio lavoro. La soluzione è l'Evaluation asincrona. Disaccoppi completamente la validazione dal loop di training. I nodi di training non vanno mai in pausa. Calcolano costantemente i gradienti, aggiornano i pesi e fanno lo stream dei checkpoint del modello verso un pool separato e dedicato di nodi di evaluation. Nell'implementazione di ScaleFold, su circa 2.000 GPU, solo 32 erano dedicate all'evaluation. Il resto non faceva altro che fare training. Tuttavia, spostare l'evaluation su nodi separati introduce una race condition. I nodi di evaluation devono finire di validare un checkpoint prima che i nodi di training producano quello successivo. Se l'evaluation rimane indietro, la tua pipeline va in stallo. Per garantire che i nodi di evaluation tengano il passo, il sistema bypassa completamente lo storage su disco. L'intero dataset di evaluation viene messo in cache direttamente nella DRAM della CPU sui nodi di validazione. Eliminando l'overhead di dispatch della CPU con i CUDA Graph in cache e facendo l'offloading della validazione su nodi asincroni con cache in memoria, la pipeline non si ferma mai. L'hardware è finalmente saturo. Quando progetti at scale, il tuo lavoro principale non è più ottimizzare la matematica; il tuo lavoro principale è evitare che le GPU debbano aspettare. Per oggi è tutto. Grazie per l'ascolto, vai a creare qualcosa di fantastico.
21

Il futuro: Flow-Matching con SimpleFold

4m 04s

Abbiamo davvero bisogno di architetture complesse e specifiche per il dominio per il ripiegamento delle proteine? Esploriamo SimpleFold, un modello sperimentale che utilizza transformer standard e flow-matching.

Download
Ciao, sono Alex di DEV STORIES DOT EU. AlphaFold: Protein Structure Prediction, episodio 21 di 21. Per anni, l'industria ha dato per scontato che prevedere la struttura di una proteina richiedesse design di reti neurali custom e incredibilmente specializzati. Ti servivano allineamenti multipli di sequenze, rappresentazioni esplicite delle coppie e triangle updates computazionalmente pesanti solo per ottenere un risultato accettabile. Ma cosa succederebbe se un transformer standard e generico potesse fare esattamente lo stesso lavoro? La risposta è un concetto chiamato flow-matching con SimpleFold. Il paper di SimpleFold di Apple introduce un cambiamento radicale rispetto alle architetture rigide che abbiamo visto nei modelli di folding tradizionali. Elimina completamente le euristiche domain-specific. I modelli tradizionali inseriscono l'intuizione biologica in hard-code nella rete. Usano allineamenti multipli di sequenze per trovare indizi evolutivi e triangle updates per imporre regole geometriche. Questo richiede un compute enorme e un'ingegneria altamente specializzata. SimpleFold abbandona queste meccaniche, optando invece per un modello generativo basato sul flow-matching, costruito esclusivamente su blocchi transformer general-purpose. SimpleFold tratta il folding come un task generativo condizionale. Pensa ai modelli text-to-image, dove un prompt di testo guida la generazione di un'immagine. Qui, la sequenza di amminoacidi è il prompt, e l'output è la struttura tridimensionale delle coordinate all-atom. Ottiene questo risultato usando il flow-matching. Il flow-matching genera dati definendo un percorso continuo da una semplice distribuzione di rumore a una distribuzione di dati complessa. Durante il training, il modello impara un campo di velocità dipendente dal tempo. Integra un'equazione differenziale ordinaria nel tempo, spostando gradualmente il rumore casuale verso le vere coordinate atomiche. Il processo inizia quando un protein language model pre-addestrato e frozen, nello specifico ESM2, converte la sequenza di amminoacidi in input in un sequence embedding. Allo stesso tempo, un atom encoder prende le coordinate atomiche rumorose e le elabora in atom token. Ecco l'intuizione chiave. Invece di mantenere mappe di interazione pairwise complesse e memory-heavy, SimpleFold usa un'operazione di grouping. Semplicemente, fa la media degli atom token appartenenti allo stesso residuo in un singolo residue token. Questi residue token vengono concatenati con i sequence embedding e passati al residue trunk. Questo trunk contiene la maggior parte dei parametri del modello. È costituito interamente da blocchi transformer standard con layer adattivi condizionati dal timestep del flusso. Non ci sono moduli geometrici equivarianti e nessun calcolo triangolare. Solo operazioni standard di attention e scaling. Infine, un'operazione di ungrouping fa il broadcast dei residue token aggiornati ai rispettivi atomi. Un atom decoder predice quindi il campo di velocità per aggiornare le posizioni finali degli atomi. Durante il training, il sistema non campiona il tempo in modo uniforme. Fa un pesante oversampling dei timestep più vicini al manifold dei dati puliti. Dato che le strutture proteiche hanno una rigida gerarchia coarse-to-fine, questo focus in late-stage forza il modello a imparare strutture altamente raffinate, incluse le delicate catene laterali. Inoltre, poiché il modello usa un obiettivo generativo anziché un obiettivo di regressione deterministico, cattura naturalmente l'incertezza. Se passi la stessa sequenza attraverso SimpleFold più volte, può generare un ensemble di diverse conformazioni valide, riflettendo accuratamente come le proteine si muovono ed esistono effettivamente in natura. SimpleFold dimostra che, se mappi il problema correttamente, un transformer general-purpose può imparare la fisica sottostante del protein folding direttamente dai dati. Ti incoraggio a leggere il paper, esplorare la documentazione ufficiale e provare a far girare il codice sul tuo hardware. Puoi anche visitare devstories.eu per suggerire argomenti per la nostra prossima serie. Per questo episodio è tutto. Grazie per l'ascolto, e continua a sviluppare!