Ho un'API che consiste fondamentalmente in due parti: 1. Una rete neurale TensorFlow che fornisce previsioni basate sull'immagine di input (principalmente calcoli GPU) e 2. Post processing su tali previsioni (principalmente CPU)
Questo è un tipo di best practice / domanda di raccomandazione. Quello che mi chiedo è se queste due sezioni dell'applicazione debbano essere disaccoppiate, collocate in contenitori Docker separati e ridimensionate separatamente. Non c'è altro uso per le previsioni di TensorFlow (nessuna altra app vorrebbe ricevere previsioni direttamente, quindi non c'è bisogno di disaccoppiare in termini di accessibilità).
L'unico scenario che posso pensare che garantirebbe il disaccoppiamento è se la Post-elaborazione consumasse una grande quantità di risorse della CPU che costringevano l'applicazione a ridimensionarsi quando la GPU veniva sottoposta a sottoutilizzo (la parte di previsione dell'app stava gestendo il carico va bene) e forzando l'applicazione a ridimensionare stiamo usando più risorse GPU del necessario.
Tuttavia, purché risorse sufficienti della CPU possano essere allocate al server in modo che il punto in cui l'app viene ridimensionata sia un punto di utilizzo elevato su CPU e GPU, non vedrei motivo per cui i servizi dovrebbero essere disaccoppiati.
Speriamo che questo abbia senso - qualche suggerimento?