Novembre: nuove funzionalità.
Nella release di Oracle Data Science che sarà disponibile in General Availability (GA) entro la fine del mese di novembre sono comprese una serie di nuove funzionalità molto interessanti:
- La possibilità di gestire ambienti Conda multipli
- La possibilità di utilizzare PySpark per trasformare ed analizzare i dati
- Il supporto del formato ONNX per la serializzazione dei modelli addestrati.
In questa nota voglio spiegare ed esplorare la prima nuova funzionalità: la possibilità di creare e gestire ambienti Conda multipli.
Ambienti Anaconda (Conda) multipli.
Oracle Data Science è basato sulla distribuzione Anaconda di Python. Tipicamente gli ambienti utilizzati dai Data Scientist utilizzano molteplici librerie Python Open Source e non è infrequente che un Data Scientist abbia bisogno di installare, per completare il proprio lavoro, una o più librerie.
Oggi è già possibile, in una Notebook Session, installare una libreria utilizzando il comando
!pip install <nome libreria>
in una delle celle iniziali del Notebook.
Tuttavia, nella release oggi disponibile in GA Data Science gestisce un ambiente conda unico e tutti i kernel dei Notebook sono creati a partire da questo ambiente. Il limite è che se, per una remota ma pur possibile ragione, la nuova libreria non è completamente compatibile con una delle libreria già installate, l'effetto è globale.
La nuova funzionalità consente di avere all'interno di una Notebook Session (immaginiamola come la VM all'interno della quale girano i nostri Notebook) più ambienti conda, tra cui scegliere l'ambiente usato per creare il kernel che fa girare il nostro Notebook. Ed in più possiamo
- clonare un ambiente
- installare librerie in un ambiente o in un ambiente clonato
- pubblicare un ambiente da noi modificato in un bucket dell'Object Storage
Vediamo con un po' di dettagli come si presentano e come si usano queste nuove funzionalità.
Ambienti del servizio ed ambienti installati.
Con la nuova funzionalità si introduce la distinzione tra ambienti offerti dal servizio ed ambienti installati.
Quando creiamo una NotebookSession nessun ambiente è installato, ma abbiamo un insieme (ad oggi sono previsti 6) di ambienti offerti dal servizio.
Per accedere alla gestione degli ambienti dobbiamo creare un nuovo Launcher ed accedere all'Environment Explorer (primo bottone in alto a sinistra):
Fig. 1
Nell'Environment Explorer possiamo vedere gli ambienti messi a disposizione dal servizio (e non ancora installati nella NoteBook Session)
Fig. 2
Come possiamo vedere sono previsti, ad oggi, sei ambienti. Il primo (Classic CPU...) è l'ambiente unico che oggi trovate in Data Science. Tale ambiente sarà mantenuto fino ad ottobre del 2021.
Per i nuovi Notebook si raccomanda l'utilizzo di uno dei nuovi cinque restanti ambienti.
Per poter creare un Notebook si deve prima procedere ad installare, nella propria Notebook Session, un ambiente tra quelli resi disponibili dal servizio.
Se premiamo il bottone install della card relativa all'ambiente scelto è visualizzato il comando da utilizzare. Il comando impiega la nuova utility di gestione odsc.
Ad esempio, per installare l'ambiente General Machine Learning il comando (da eseguire in una terminal session) è:
odsc install -s mlcpuv1
La figura seguente mostra gli ambienti installati nella Notebook Session che ho usato per preparare questo articolo:
Fig. 3
Collocazione degli ambienti sul file system.
I files degli ambienti sono tutti collocati all'interno della directory
/home/datascience/conda
ad esempio, nel mio caso:
/home/datascience/conda
(base) bash-4.2$
(base) bash-4.2$ ls -l
total 16
drwxr-xr-x. 21 datascience users 4096 Nov 2 09:19 explv1
drwxr-xr-x. 21 datascience users 4096 Nov 2 09:46 explv2v1_0
drwxr-xr-x. 4 datascience users 4096 Nov 2 09:19 notebooks
drwxr-xr-x. 12 datascience users 4096 Oct 8 06:03 pyspv10
Per poter gestire ambienti multipli è necessario avere spazio disponibile su disco. Si deve quindi tenere sotto controllo lo spazio libero disponibile in /home/datascience. Lo spazio complessivo a disposizione è specificato quando si crea la Notebook Session. Lo spazio per i vari ambienti lo possiamo vedere in fig. 2.
Operazioni sugli ambienti.
Come già detto, il primo passo da compiere è installare un ambiente all'interno della propria Notebook Session. Dopo averlo installato possiamo utilizzare tale ambiente per il kernel che esegue un nostro Notebook. La scelta del kernel va fatta all'atto della creazione del nuovo Notebook.
Utilizzando l'utility di gestione odsc possiamo effettuare anche altre operazioni. Ad esempio, possiamo clonare un ambiente: creare un nuovo ambiente, con un nuovo nome, che sarà una copia esatta del vecchio ambiente. E', ad esempio, in questo nuovo ambiente clonato che potremmo scegliere di installare una o più nuove librerie.
Il comando per clonare l'ambiente explv1 in explv2 è:
odsc clone -f explv1 -e explv2
Dopo aver creato il clone, possiamo creare un Notebook che utilizzi l'ambiente explv2 ed installare una nuova libreria eseguendo in una cella del notebook il solito comando
!pip install <nome libreria>
E' importante notare che la libreria è installata nell'ambiente in utilizzo (nel nostro esempio: explv2) ed è installata in modo persistente. Ovvero, se disattiviamo e poi riattiviamo la Notebook Session la libreria è ancora al posto suo. Inoltre, per poter installare la libreria, la subnet chin cui è collocata la Notebook Session deve essere configurata per poter accedere (ad esempio tramite un NAT Gateway) ad Internet.
Tutti questi comandi, con esempi esaurienti, li troveremo nella documentazione ufficiale quando la nuova release sarà GA.
Pubblicare un ambiente.
Qui faccio un cenno ad un'importante funzionalità: la possibilità di pubblicare un ambiente.
Nel momento in cui ho creato un nuovo ambiente ed ho installato in esso una o più nuove librerie Python posso voler rendere disponibile questo ambiente ad altri Data Scientist della mia azienda. Lo posso fare pubblicando l'ambiente in un bucket dell'Object Storage. I miei colleghi potranno poi installare questo ambiente nella propria Notebook Session. Ovviamente, dovranno avere i permessi per accedere al bucket.
Disponibilità delle nuove funzionalità.
Come ho scritto, la previsione è che tali funzionalità siano disponibili entro la fine del mese di novembre 20202. Esse sono già utilizzate in beta test da gruppi interni ed alcuni clienti selezionati.
Vale comunque l'avvertimento: non è possibile pianificare sulla base di queste indicazioni temporali di massima. Si deve, prima, attendere che le funzionalità siano disponibili in GA.