Come utilizzare i risolutori con le macchine virtuali?

Aug 28 2020

C'è un modo per installare e utilizzare risolutori commerciali (per i quali ho una licenza) su alcune macchine virtuali?

Ad esempio, se è possibile installare la versione studente del motore Octeract su una macchina virtuale del motore google? O usi Gurobi su una VM?

Una VM con 624 GB di memoria e 96 vCPU (che è una possibile VM), penso (e sono curioso di provare) possa risolvere efficacemente grossi problemi con un grande miglioramento dei tempi di risoluzione.

Se non lo è, qual è lo svantaggio di avere questa opzione?

Risposte

5 NikosKazazakis Aug 28 2020 at 19:43

(Informazioni complete: ho fondato Octeract)

Quindi, alcune cose qui:

In pratica

Tecnologicamente parlando, ovviamente puoi (questo è il punto di una VM), a meno che un risolutore non utilizzi la tecnologia di antivirtualizzazione e presupponendo che il tuo hardware supporti la virtualizzazione. Tuttavia, alcune licenze del risolutore tendono ad essere legate a una macchina/utente specifico, quindi dovrai leggere attentamente la licenza del risolutore per assicurarti di non violare i termini della licenza.

Licenza per studenti Octeract Engine

Non posso davvero commentare altri risolutori, ma per la licenza per studenti Octeract Engine puoi attualmente inserirla e utilizzarla su una VM quanto vuoi, purché tu la usi sulla tua macchina universitaria designata. L'unica limitazione pratica della licenza è che non puoi usarla sul cloud di un'università. Non lo consideriamo davvero restrittivo, poiché la licenza per studenti supporta comunque fino a 16 CPU (vedi sotto).

Numero di core supportati dalla licenza

Ottenere una macchina robusta può solo aiutare così tanto, dato che la versione per studenti è fino a 16 core. Questo è un limite codificato che non puoi aggirare, il che è vero per tutti i risolutori multi-core. Per calcoli ad alte prestazioni disponiamo di licenze accademiche per cluster e supercomputing per oltre 96 CPU che sono commerciali. Tuttavia, offriamo prove piuttosto lunghe, quindi richiedi semplicemente una licenza di prova Academic Cluster e ti risolveremo.

Prestazione

Ancora una volta, non posso commentare altri risolutori, ma dal momento che le persone hanno menzionato le prestazioni, questo è interessante. Octeract Engine è un risolutore di supercalcolo nativo: utilizza MPI anche su una macchina e di solito funzionerà immediatamente su un cluster HPC/AWS (a meno che non sia necessario risolvere eventuali impostazioni del cluster funky con l'IT dell'università), anche per 10.000 core. Quello che posso dire è che è l'unico risolutore MINLP commerciale che conosco che supporta nativamente il supercalcolo. È installato in un gruppo di supercomputer in tutto il mondo e abbiamo osservato che le prestazioni scalano linearmente con il numero di core, cosa che normalmente non è possibile ottenere con un risolutore tradizionale. Se sei curioso, puoi vedere alcuni benchmark di ridimensionamento parallelo utilizzando 170 core sul nostro sito Web (i benchmark su più core in arrivo!).

Virtualizzazione

La stragrande maggioranza dei solutori sono seriali o multithread, il che significa che il loro limite è una macchina. Questo potrebbe essere il motivo per cui sei tentato di creare una VM di grandi dimensioni (presumo che tu voglia creare una VM multi-macchina), poiché ciò potrebbe aggirare le limitazioni della singola macchina. Tuttavia, per la maggior parte dei solutori non ne otterrai molto perché i loro algoritmi non sono progettati per quel livello di parallelizzazione. Con Octeract Engine non è un problema, ma non hai nemmeno bisogno di una VM, un semplice cluster funzionerà perfettamente. Uno dei motivi per cui potresti non voler utilizzare una VM è che la virtualizzazione può comportare un sovraccarico considerevole, a seconda dell'hardware e del software di virtualizzazione utilizzato. Un'eccezione qui sono le macchine virtuali AWS/Docker. Abbiamo testato Octeract Engine su entrambi e non abbiamo notato cali di prestazioni.

5 wsg Aug 28 2020 at 20:02

Dipende dal risolutore e dal tipo di licenza, ma in genere è possibile e dovresti contattare direttamente il fornitore del software per ottenere maggiori informazioni.

La maggior parte dei solutori (l'ho visto con Gurobi, Cplex, FICO Xpress) possono essere acquistati con diverse opzioni di licenza:

  • licenze per macchine dedicate
  • licenza per utente singolo (che include le licenze per studenti)
  • licenze utente mobili (consente l'uso simultaneo di un numero limitato di licenze da parte di uno o più utenti su una o più macchine)
  • Licenze ISV (fornitore di software integrato) o ESA (accordo di soluzione incorporata)
  • contratti di licenza personalizzati
  • licenze pay-per-use (Gurobi Cloud, Docloud)

Queste licenze sono per casi d'uso diversi e hanno un prezzo molto diverso.

Ad esempio, una licenza per una macchina dedicata ha un prezzo in base al numero di core, memoria e forse alcuni dettagli hardware specifici aggiuntivi. Se si desidera trasferire questo tipo di licenza su una macchina diversa, normalmente non è possibile semplicemente disinstallarla su una macchina e spostarla su una seconda macchina.

Le licenze per macchine dedicate e le licenze per utente singolo normalmente non sono adatte per essere installate su una VM, ma secondo la mia esperienza non ci sono problemi con le licenze utente mobili e con le licenze ISV/ESA, puoi eseguirle in VM o anche in contenitori docker.

Le licenze per studenti sono un caso speciale di licenze per utente singolo, quindi non sono fatte per essere installate su macchine virtuali. Ma penso che se hai un caso d'uso convincente, dovrebbe essere possibile contattare il fornitore del software e ottenere una licenza che puoi utilizzare su una VM, o forse sei in grado di ottenere tale licenza direttamente attraverso la tua università.

3 PhilippChristophel Aug 28 2020 at 16:45

I solutori SAS fanno parte della piattaforma cloud SAS Viya e quindi possono essere eseguiti in container e macchine virtuali. Lo stesso è probabilmente vero per la maggior parte dei solutori commerciali.

Ma i vantaggi potrebbero non essere così grandi come pensi. Mentre molta memoria non fa certamente male e potrebbe essere necessaria per alcune istanze problematiche, il guadagno da centinaia di CPU è probabilmente minimo.

È opinione comune che i miglioramenti nella modellazione di un'istanza e negli algoritmi di base di un risolutore in genere superino una maggiore potenza di calcolo di una quantità significativa.

Anche la virtualizzazione presenta alcuni inconvenienti. Un risolutore potrebbe non ottenere tutte le risorse in un ambiente condiviso. Ad alcune piattaforme cloud non piacciono i processi che occupano molta memoria o cicli della CPU e potrebbero controllarli (la quantità di calcolo che fa un risolutore MILP potrebbe sembrare molto simile a un processo in un ciclo infinito dall'esterno).