CuriositàTecnologia

Ecco i server utilizzati per Italia Artificiale

I due server utilizzati per produrre tutte le immagini di Italia Artificiale (la fotografia che ho twittato)
I due server utilizzati per produrre tutte le immagini di Italia Artificiale (la fotografia che ho twittato). (premi sull’immagine per per ingrandire)

Di recente ho twittato (qui) una fotografia dei due server che sono stati utilizzati per produrre tutte le immagini di Italia Artificiale. In questo articolo, dal taglio decisamente più tecnico (senza però esagerare), descriverò le loro configurazioni, spiegando le motivazioni che mi hanno portato all’acquisto di ciascuna componente.

I due computer sono stati assemblati specificatamente per lavorare su problemi di Intelligenza Artificiale, Machine Learning e Deep Learning. Per questo motivo, oltre agli appassionati di hardware, pubblico naturale per questo genere di post, questo articolo si rivolge anche agli appassionati/professionisti che operano nel campo dell’IA e che sono alla ricerca di spunti per poter assemblare un proprio server. Prima di iniziare è doveroso però fare una precisazione: le macchine descritte in questo articolo hanno ormai la loro età. Pertanto, qualora si desideri assemblare un nuovo server, sarà bene controllare prima le novità offerte dal mercato (soprattutto lato GPU, con l’introduzione della RTX 2080 Ti, ad esempio). Questo articolo vuole semplicemente fornire delle indicazioni di massima, senza alcuna pretesa di esaustività.

Server 1: anziano ma con stile

Il server più anziano. Domina la grande ventola (recuperata da un vecchio case) usata per raffreddare i bollenti spiriti della GTX 1080 Ti. In alto, si può osservare la CPU con ancora il suo dissipatore originale.
Il server più anziano. Domina la grande ventola (recuperata da un vecchio case) usata per raffreddare i bollenti spiriti della GTX 1080 Ti. In alto, si può osservare la CPU con ancora il suo dissipatore originale. (premi sull’immagine per per ingrandire)

Cominciamo dalla macchina più “anziana”: il primo server che ho assemblato per finalità di Intelligenza Artificiale, nel 2017. Questo computer è il risultato di potenziamenti successivi, un vero e proprio, continuo, work in progress:

  • La base è quella di un computer abbastanza datato, cui ho deciso di dare nuova vita – un Asus CM6870, acquistato nel 2013 (prezzo di acquisto circa 700 euro).
  • CPU: quella originale, un I7 3770 8-core da 3.40Ghz
  • Scheda madre: è rimasta originale, una ASUS P8H77-M PRO
  • RAM: 32 GB di RAM DDR3 (4 banchi da 8, Kingston HyperX Fury)
  • GPU: Zotac GTX 1080 Ti Founder Edition
  • Case: Corsair Graphite 780T
  • Hard disk: 500GB SSD Samsung 850Evo, + 2 HD da 2TB in RAID 1
  • Alimentatore: Cooler Master V850
  • OS: Ubuntu 16.04 LTS

L’upgrade è stato rivolto principalmente agli aspetti davvero importanti per quanto riguarda le tematiche di interesse: aumento RAM, miglioramento performance GPU con l’introduzione di una GTX 1080 Ti e potenziamento dello storage, con nuove unità SSD e RAID. Vale la pena sottolineare come, con i giusti potenziamenti e la scelta di un OS libero e leggero, un computer di fascia medio-alta acquistato nel 2013 sia oggi ancora perfettamente in grado di risolvere task che richiedono elevate potenze di calcolo.

La scelta di un case ampio, areato e spazioso è fondamentale per aiutare a ridurre, quanto più possibile, le temperature, facilitando inoltre l’accesso alle componenti.

Server 2: giovane e pimpante

Ed ecco il secondo server! Raffreddamento a liquido, AMD Threadripper, GTX 1080 Ti e 32GB di RAM DDR4. A differenza del server 1, qui non c'è nessuna "ventolona" aggiuntiva per raffreddare la GPU: questa è dotata di un raffreddamento più efficiente.
Ed ecco il secondo server! Raffreddamento a liquido, AMD Threadripper, GTX 1080 Ti e 32GB di RAM DDR4. A differenza del server 1, qui non c’è nessuna “ventolona” aggiuntiva per raffreddare la GPU: questa unità è infatti dotata di un raffreddamento più efficiente. (premi sull’immagine per per ingrandire)

Questa è la nuova macchina, assemblata nell’ottobre/novembre 2018 e, a differenza della precedente, completamente nuova. Nella scelta delle componenti ho cercato il miglior compromesso (per le specifiche finalità di utilizzo) tra costi e prestazioni. Il valore complessivo di questo secondo computer si aggirava, al momento dell’acquisto, sui 2400-2700€ (includendo altri componenti fondamentali qui non descritti, come ad esempio l’UPS). Una cifra sicuramente importante, che però consente di iniziare a divertirsi, togliendosi numerose soddisfazioni. Ma ora vediamo la configurazione, prima in breve poi in dettaglio!

Configurazione in breve

  • CPU: AMD Threadripper 1900x (8 core 3.8GHz, 16 threads)
  • Dissipatore: a liquido, ARCTIC Liquid Freezer 120
  • Scheda madre: Asus Prime X399-A
  • RAM: 32GB DDR4 3200MHz (4 banchi da 8GB, G.Skill Trident Z RGB)
  • GPU: Gigabyte GTX 1080 Ti Gaming OC
  • Case: Corsair Graphite 780T
  • Hard disk: 500GB SSD Samsung 860Evo, + 2 HD da 3TB in RAID 1
  • Alimentatore: Cooler Master V850
  • OS: Ubuntu 19.04 LTS

CPU: AMD Threadripper 1900x

Il server 1, descritto nella sezione precedente, è stato ed è tutt’ora in grado di offrire performance di tutto rispetto, soprattutto grazie alle prestazioni offerte dalla GPU. La CPU non è però in grado di tenere il passo della GTX 1080 Ti e, in più occasioni, si è dimostrata essere il vero collo di bottiglia del sistema. Ecco perché ho deciso di investire sul processore, acquistando un AMD Threadripper 1900x (8 core 3.8GHz, 16 threads), una CPU davvero ottima.

  • Oltre ad essere un ottimo processore per quanto concerne il calcolo puro, l’AMD Threadripper 1900x (come gli altri della gen 1) offre fino a 64 linee PCIe, di cui 4 dedicate al chipset X399. Ne rimangono quindi 60, un numero abbastanza elevato, se consideriamo che un Intel Core i7–7820X, ad esempio, ne offriva (e offre!) “solamente” 28. Avere una così alta disponibilità di linee PCI consente, senza problemi, di utilizzare due GPU sfruttandole al massimo (ogni GPU utilizza una connessione x16). Volendo spingersi oltre, il numero di linee disponibili consente di utilizzare un numero ancora maggiore di GPU, applicazione che però non descriverò in questo articolo.
  • Ho optato per un 1900x anziché per un gen 2 per un mero discorso economico: il rapporto prestazioni-prezzo è infatti ancora oggi piuttosto vantaggioso.
  • Ho valutato anche l’acquisto di un 1950x (16 core 3.4GHz, 32 threads) anziché del 1900x: l’elevato numero di core offerti lo rende infatti perfetto per le macchine virtuali. Tuttavia, considerata la differenza di prezzo, il clock di base più elevato del 1900x e le mie specifiche necessità, ho preferito acquistare il 1900x, decisione di cui sono ancora oggi fortemente convinto.

Raffreddamento: ARCTIC Liquid Freezer 120

L’AMD Threadripper tende a scaldare parecchio. Per questo motivo ho scelto un raffreddamento a liquido, specificatamente progettato per questo processore (ha una superficie molto più ampia rispetto ad una CPU tradizionale): l’ARCTIC Liquid Freezer 120. Sono sempre stato un po’ scettico verso i sistemi di raffreddamento a liquido, ritenendoli potenzialmente pericolosi (in caso di perdite di liquido dal circuito) e difficili da mantenere. Tuttavia, dopo più di sei mesi di uso intenso, devo ammettere di essermi ricreduto e di essere piacevolmente soddisfatto: raffredda in modo estremamente efficace e silenzioso.

Scheda madre: Asus Prime X399-A

L’AMD Threadripper ha un socket (TR4) che richiede schede madri specifiche. Tra le schede disponibili, ho scelto la Asus Prime X399-A, che garantisce performance elevate e alta capacità di espansione per il futuro. In particolare:

  • Offre 4 slot PCIe 3.0 x16
  • Supporta sia la tecnologia NVMe U.2 sia M.2. Si possono così collegare SSD sfruttando la banda delle connessioni PCIe x4, senza bisogno di schede aggiuntive e senza occupare gli slot principali. Non ho ancora provato ad utilizzare questa tecnologia ma devo ammettere di essere molto tentato.
  • Supporta il 2-way/3-way SLI e CrossFire

RAM: DDR4 3200MHz

Il server monta 32GB DDR4 3200MHz (4 banchi da 8GB, G.Skill Trident Z RGB). Nonostante la scheda madre supporti RAM ECC, ho optato per moduli non ECC per contenere i prezzi (fino ad ora non ho avuto alcun problema).

GPU: Gigabyte GTX 1080 Ti Gaming OC

La scelta della GPU è ricaduta su una Gigabyte GTX 1080 Ti Gaming OC. Ho acquistato un modello differente da quello utilizzato nel primo server per motivi strettamente legati alla maggiore facilità di reperimento online. Questa versione ha un prezzo leggermente superiore rispetto a quella utilizzata nel server 1, ma garantisce maggiori performance ed è dotata di un sistema di raffreddamento maggiorato che risulta essere efficace e poco rumoroso (le ventole vengono attivate soltanto quando necessarie).

Come riportato in precedenza, ho assemblato questo computer nel periodo di ottobre/novembre 2018, ossia al lancio della GTX 2080 Ti. Nonostante il desiderio di provare questa nuova scheda, ho deciso di acquistare una GTX 1080 Ti perché aveva (credo che un simile ragionamento possa valere anche oggi) un miglior rapporto prestazioni/prezzo. Detto in parole povere: offre prestazioni davvero notevoli ad un prezzo relativamente “accessibile”. Purtroppo, per le mie necessità, la RTX 2080 (non Ti) non rappresenta una possibilità, dato che non offre sufficiente memoria video.

CASE: Corsair Graphite 780T

Per entrambi i server, ho scelto un Corsair Graphite 780T, spettacolare: offre tanto spazio, è altamente modulare, bello da vedere (giudizio assolutamente soggettivo) e garantisce un facile accesso a tutta la componentistica.

Hard disk

500GB SSD Samsung 860Evo, + 2 HD da 3TB in RAID 1 (sono dei classici WD serie green, probabilmente una serie più performante avrebbe potuto giovare ma, ad oggi, non mi sono pentito della scelta fatta).

Alimentazione: Cooler Master V850

Per entrambi i server ho scelto un Cooler Master V850. Questo alimentatore è modulare (i cavi possono cioè essere staccati/attaccati liberamente, in funzione delle proprie necessità, lasciando così il case ordinato e ben areato) e offre 850W, una potenza più che sufficiente per le mie necessità.

Considerazioni finali

Elementi al contorno – Come ho detto in precedenza, vi sono alcuni elementi al contorno che non sono stati qui descritti. Di questi, ve ne sono due che giudico assolutamente imprescindibili: un UPS, per garantire il corretto arresto delle macchine in caso di mancanza di corrente, un NAS per condividere velocemente dati tra i computer e per avere un archivio di sufficiente capienza,

Un server o due server? – La domanda che potrebbe sorgere spontanea è: meglio una macchina con due GPU o due server separati? La risposta, come spesso accade, è: dipende. Due server offrono una maggiore flessibilità – è infatti possibile sia utilizzarli separatamente sia mettere tutte le GPU in una singola macchina qualora l’applicazione lo richieda – a fronte però di una spesa maggiore.

L’importanza della CPU – Quando si assembla un server di questo tipo si tende a sottovalutare l’importanza della CPU che, sebbene la GPU faccia gran parte del lavoro, continua ad avere un ruolo chiave per le performance complessive del sistema. Un processore non sufficientemente potente finirebbe per diventare il collo di bottiglia, non permettendo così di sfruttare la scheda grafica al massimo del suo potenziale.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *