"New Neural" è un progetto di motore di rete neurale Open Source per la piattaforma MetaTrader 5. - pagina 71

 
joo:

Se consideriamo l'addestramento dei neuroni come livello micro (cicli di elaborazione di array indipendenti in GA, calcolo dei singoli neuroni della rete, ecc.) e livello macro (intero PF), allora non ci sono domande e problemi con il primo - tutto è perfettamente parallelo e funzionerà bene su GPU.

Ma c'è un problema a livello macro. Prima di tutto, sospetto che non sia possibile a causa delle limitazioni della quantità di informazioni gestite sulla GPU. Potremmo lavorare intorno a questo, usando tester regolare e cloud (ogni livello macro sarà trasferito ad agenti separati, e lì sarà elaborato a livello micro - se l'host lo permette, naturalmente). Ma non abbiamo gli strumenti per controllare il tester esternamente per usare GA esterni.

Quindi dovremo limitarci all'accelerazione a livello micro. L'accelerazione sarà anche molto decente, dato che le maglie e gli stessi GA abbondano di calcoli che sono indipendenti l'uno dall'altro.

Per quanto riguarda UGA stesso, se non si tocca il fine tuning per OpenCL, non si ha praticamente nulla da migliorare (forse solo alcuni frammenti di codice, ma non servirà a nulla grazie a coloro che hanno partecipato al thread di discussione dell'algoritmo nell'articolo). Si può solo provare a selezionare le impostazioni di UGA specificamente per le reti di allenamento.


Le GPU moderne hanno 1GB di RAM o più.

Difficilmente posso immaginare un campione di allenamento di dimensioni maggiori.

Sto bene con il macro-livello - testato )

Sarebbe ragionevole utilizzare la seguente architettura per GA: GA stesso su CPU, mentre i calcoli FF pesanti su GPU

 
lei.umana:

Posso avere un piccolo esempio da usare per MT5?


Un esempio di cosa? Un indicatore di rete neurale, una strategia di rete neurale, ...? ?
 
yu-sha:

Le GPU moderne hanno 1GB di RAM o più

Difficilmente posso immaginare un campione di allenamento di dimensioni maggiori

Se non mi sbaglio, le schede grafiche moderne hanno due tipi di RAM - quella condivisa, che può essere di diversi GByte ed è abbastanza lenta, e quella che ha ogni singolo processore GPU - veloce, ma una piccola quantità di poche centinaia di KB. Il mio ragionamento era che è qui che potrebbe sorgere il problema.

yu-sha:

Non c'è niente di sbagliato nel livello macro - testato )

Ma, se lo dici tu, allora ti prendo in parola e ora sono tranquillo. :)

yu-sha:

Per il GA è ragionevole utilizzare la seguente architettura: il GA stesso sulla CPU, e i calcoli FF pesanti sulla GPU

Beh, è una questione di tecnica, come si dice. Si potrebbe fare così. Per quanto ne so, OpenCL permette di selezionare nel codice quali core devono essere utilizzati per eseguire i calcoli - su CPU o GPU.

 
yu-sha:
Un esempio di cosa? Un indicatore di rete neurale, una strategia di rete neurale, ...? ?
Come impostare un'architettura di rete sciolta (non completamente connessa), dove immettere, dove togliere, dove sono i pesi?
 
joo:

Se non mi sbaglio, le schede grafiche moderne hanno due tipi di memoria operativa - la memoria condivisa, che può essere di diversi GByte e che è abbastanza lenta, e quella che ha ogni singolo processore GPU - veloce, ma una piccola quantità di poche centinaia di KB. Ho pensato che è qui che potrebbe sorgere il problema.

Il comune "lento" è l'analogo completo di DDR per la CPU (~0,75 - 1,00GHz - non molto lento)

Fast è la controparte cache della CPU.

Le GPU permettono di gestire questa memoria molto on-chip (cache), a differenza delle CPU (potrei sbagliarmi, ma in qualche modo non mi sono imbattuto in una domanda simile).

Ma tutti questi sono problemi di ottimizzazione aggiuntivi, si può vivere senza di loro

 

lei.umana:

yu-sha:
Un esempio di cosa? Indicatore di rete neurale, strategia di rete neurale, ... ?
Come impostare un'architettura di rete sciolta (non completamente connessa), dove immettere, dove togliere, dove sono i pesi?

Sì sì, abbiamo bisogno di un esempio di spinta e poi lo capiremo.

Un GA standard e una nuvola aiuterebbero il calcolo parallelo della FF. Soprattutto come aveva promesso Renat:

In nessun modo, il tester GA è limitato a 64 bit di ricerca, e per i pesi di addestramento avete bisogno di 16-64 bit per ogni peso (dipende dalla precisione della ricerca), e i pesi possono essere fino a ..... alcune migliaia, e possono essere decine e centinaia di migliaia. UGA può gestire questo abbastanza bene, mentre il tester no.

Quindi, o si dovrebbe chiedere a MQ di aggiornare GA (cosa che ho fatto per due anni senza successo) o UGA sarà molto più lento che in cluster.

 
yu-sha:

Comune "lento" - questo è l'analogo della CPU completa di DDR (~0,75 - 1,00GHz - non molto lento)

Veloce - questa è la controparte della memoria cache della CPU.

Le GPU permettono di gestire questa memoria molto on-chip (cache), a differenza delle CPU (potrei sbagliarmi, ma in qualche modo non mi sono imbattuto in una domanda simile).

Ma tutto questo è una questione di ottimizzazione supplementare e possiamo vivere senza

Non il punto, la memoria, e sulla GPU sarà difficile implementare le torsioni della logica dell'oggetto, ho un'idea abbastanza buona di come implementare il NS come una complessa interazione di oggetti all'interno dei quali ci sono funzioni di calcolo GPU (questo è circa il livello micro), ma non riesco a immaginare come questo complesso codice oggetto quei NS intero a scivolare la GPU come diversi FF con diversi set di pesi (livello macro) ??

La domanda è retorica, anche se se qualcuno lo immagina non dispiace ascoltare.

 

Ho un'idea divertente:

Forse per chiedere all 'APIMQ di impostare i compiti per il cluster?

per distribuire il compito direttamente da MQL5, bypassando il tester. Certo, è un compito complicato, molti controlli devono essere impostati, ma è gestibile.

L'ho già imparato, ma devo lavorare un po'.

 
Urain:

Sì sì, vorremmo un esempio di spinta e poi lo capiremo.

Esempio 1:

Dichiarazione del compito:

- abbiamo bisogno di ripristinare l'algoritmo dell'indicatore, le cui fonti non sono disponibili (o è un indicatore "ridisegnato" - a proposito, non è un cattivo maestro per NS), ma sappiamo i valori su ogni barra

- i valori dell'indicatore sono nell'intervallo (-1;+1)

Ingressi:

- sappiamo (sospettiamo?) che questo indicatore utilizza gli ultimi 10 prezzi di chiusura


Esempio #2:

Dichiarazione del problema:

- Abbiamo bisogno di trovare la strategia di trading a rete neurale che commercia meglio (massimizzare il Profitto/MaxDD) su un tratto di storia

Dati di ingresso:

- MACD normalizzato (13,35), MACD (50,100), RSI(8), RSI(13)

Esempio #3:

Dichiarazione del compito:

- Per insegnare a una rete neurale una tabella di moltiplicazione

Dati di ingresso:

- x,y moltiplicatori nell'intervallo (-1;+1)

Potete proporre il vostro esempio e, se è possibile, vi mostrerò l'architettura di rete in XML.

 
yu-sha:

Potete suggerire il vostro esempio e, se possibile, posso mostrarvi l'architettura di rete in XML

e soprattutto, il codice sorgente di come viene creata questa architettura, come viene generato il file XML.