
Un breve tutorial per configurare PyCharm ed eseguire il codice su un'istanza GCP remota tramite un interprete SSH
Qual è l'obiettivo?
Scrivere il codice in locale sul proprio notebook ma eseguirlo su una macchina Google Cloud remota con più RAM e CPU.
Quando si sviluppa un'applicazione Python, è spesso comodo eseguire il codice su un'istanza GCP (AI Notebook / Google Compute Engine). È un approccio particolarmente utile, dato che il codice di Machine Learning (ML) o di elaborazione dati richiede in genere una macchina ad alte prestazioni con più CPU e RAM abbondante.
Un altro vantaggio è che, eseguendo il codice da remoto, l'autenticazione verso gli altri servizi di Google Cloud Platform avviene tramite il service account associato all'istanza. Al termine di questo tutorial sarà possibile usare PyCharm dal proprio Mac, con il codice eseguito da remoto su una VM GCP.
Prerequisiti
Per iniziare servono:
- PyCharm Pro installato sulla propria macchina Mac/Linux
- Un account GCP attivo
Mettiamoci all'opera
Passo 1: configurare una chiave SSH sul Mac [1]
Eseguire questo comando per generare una nuova coppia di chiavi SSH dal terminale Mac/Linux:
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME]
Ho scelto di non impostare una passphrase per la chiave, che ho chiamato temp_key
Formattare la chiave pubblica
Stampare il contenuto della chiave pubblica della coppia SSH appena creata con il comando seguente:
cat ./ssh/temp_key.pubCopiare negli appunti il contenuto della chiave, partendo dalla dicitura ssh-rsa (inclusa) fino al segno "=" (prima dello username).

Aprire un qualsiasi editor di testo e formattare la chiave in questo modo:
ssh-rsa [KEY VALUE]= [USER_NAME]Conservare il testo: servirà più avanti.
Passo 2: creare o modificare una VM su GCP
A questo punto serve una macchina nel cloud. Personalmente preferisco gli AI Notebook, perché arrivano con un ambiente Python AI preinstallato che include numerose librerie di data science, ML e Google Cloud. Per crearne uno, seguire questa guida.
Va ricordato che gli AI Notebook (oggi parte di Vertex AI) si appoggiano a un'istanza Compute Engine sottostante. Dopo aver creato un'istanza Compute Engine standard o un AI Notebook, occorre modificarla per consentire l'accesso remoto via SSH. In questo modo PyCharm potrà copiare i file sulla macchina e collegarsi all'interprete Python.
Modificare la macchina di un AI Notebook
L'istanza notebook denominata "my-instance" presenta i seguenti dettagli:

Cliccando su "VIEW VM DETAILS" e poi su "EDIT" è possibile modificare le specifiche della Compute Engine che ospita l'AI Notebook. Scorrere fino a SSH Keys e aprire il menu a tendina "show and edit".

Cliccare su "Add item" e incollare la chiave SSH formattata, aggiungendo uno username alla fine. Se l'operazione è andata a buon fine, lo username comparirà a sinistra della chiave.

È inoltre possibile assegnare un IP esterno statico alla macchina, così che l'IP pubblico non cambi a ogni riavvio.
Passo 3: configurare PyCharm
A questo punto la macchina è in grado di accettare connessioni SSH tramite la coppia di chiavi creata. Non resta che permettere a PyCharm di distribuire ed eseguire il codice su quella macchina remota. Copiare l'IP esterno della macchina, visibile nei dettagli della VM una volta che è in esecuzione.

Aprire quindi PyCharm > Preferences > Project:[name] > Python interpreter > icona delle opzioni > add

Nel campo Host inserire l'indirizzo IP esterno della macchina; nel campo Username, il nome utente utilizzato in fase di creazione della chiave. Cliccare su "Next" per far sì che PyCharm tenti di stabilire una connessione con la VM. A quel punto sarà necessario fornire le credenziali di connessione corrette.

Indicare nel campo "private key file" il percorso della chiave privata SSH (nel nostro caso /[user]/.ssh/temp_key, cioè quella senza estensione .pub).
Cliccare su Next ed è tutto pronto. In basso a destra dello schermo si vedrà che l'interprete è ora l'ambiente Python remoto. Al primo utilizzo possono servire alcuni minuti per copiare i file di supporto di PyCharm sulla macchina remota e sincronizzare gli ambienti Python.

Approfondimento: più ambienti Python
A volte sulla macchina remota è installato più di un ambiente Python. Ad esempio, sull'AI Notebook potrebbe essere presente un ambiente conda. È possibile scegliere quale utilizzare modificando la configurazione dell'interprete remoto.
Accedere alle impostazioni dell'interprete dal menu in basso a destra di PyCharm:

Modificare ancora una volta le impostazioni dell'interprete esistente:

Nel campo "python interpreter path" incollare il percorso dell'installazione di Python sulla macchina remota.

In sintesi
Oltre al tutorial appena visto, ci sono un paio di risorse che vale la pena segnalare. Per approfondire la configurazione avanzata dell'interprete Python in PyCharm, fare riferimento a questa guida di JetBrains. Per la configurazione avanzata della chiave SSH sulle istanze GCP è invece utile questa risorsa.
Buon lavoro!
Grazie per la lettura. Per restare aggiornati, seguiteci sul DoiT Engineering Blog , sul canale LinkedIn di DoiT e sul canale Twitter di DoiT . Per scoprire le opportunità di carriera, visitate https://careers.doit.com .