18 Bundle e CI/CD (anteprima)
I bundle definiscono il modo in cui le risorse di Oracle AI Data Platform Workbench sono confezionate, con controllo delle versioni, condivise e distribuite tra aree di lavoro e ambienti.
È possibile creare bundle per job e agenti. Un bundle viene creato in una cartella Git in modo che i file bundle possano essere sottoposti a commit e push in un repository Git. Le risorse incluse nel bundle possono provenire da qualsiasi posizione nell'area di lavoro. Se le risorse selezionate fanno riferimento a file o dipendenze di supporto, ad esempio notebook, script o computazione, tali riferimenti vengono inclusi nel bundle in modo che le risorse possano essere distribuite in un altro ambiente senza ricreare manualmente gli stessi componenti.
È possibile creare bundle dall'area di lavoro e selezionare le risorse di Oracle AI Data Platform Workbench da includere al momento della creazione. I bundle esistenti possono essere modificati per aggiungere o rimuovere risorse. La creazione di bundle di risorse consente di raggruppare i job e gli agenti correlati e di distribuirli in altri ambienti con le relative dipendenze invariate.
È possibile eseguire il commit e il push dei bundle nel repository Git tramite le cartelle Git. Gli utenti possono quindi estrarre i bundle nei propri ambienti e distribuirli. Le modifiche ai file bundle sono disponibili per altri ambienti dopo il commit e il push delle modifiche nel repository Git. Ogni volta che gli utenti estraggono il bundle aggiornato dal repository Git, ricevono gli ultimi file di risorse con commit.
Concetti bundle
| Concetto | Significato | Azione utente |
|---|---|---|
| Cartella Git | Cartella AI Data Platform connessa a un repository e a una diramazione Git. I bundle possono essere creati solo nelle cartelle Git. | Creare o aprire una cartella Git prima di creare un bundle. |
| Bundle | Package distribuibile che definisce le risorse selezionate e le relative dipendenze. | Creare il bundle dall'area di lavoro, quindi selezionare risorse quali job o flussi agente. |
| Contenuto bundle | File generati che descrivono risorse, variabili, impostazioni di destinazione e artifact necessari per la distribuzione. | Rivedere il contenuto generato dopo la creazione o la sincronizzazione. Eseguire il commit e il push del bundle tramite Git quando è pronto. |
| Obiettivo | Configurazione dell'ambiente o dell'area di lavoro utilizzata durante la distribuzione del bundle al di fuori dell'ambiente di origine. | Fornire i valori che devono essere modificati dall'ambiente, ad esempio la chiave dell'area di lavoro, il nome della credenziale, la chiave token o le impostazioni predefinite dei parametri. |
| Articolo distribuito | Risorsa creata o aggiornata da una distribuzione bundle nell'area di lavoro di destinazione. | Utilizzare la scheda Distribuzione per distribuire, rivedere gli elementi distribuiti, eseguire i job e rimuovere le risorse distribuite quando necessario. |
| Sincronizzazione | Azione bundle che aggiorna le risorse e le dipendenze bundle dalle risorse di origine più recenti. | Eseguire la sincronizzazione dopo aver modificato le risorse in bundle, quindi eseguire il commit dei file bundle aggiornati in Git. |
Operazioni preliminari
- Creare le credenziali Git e una cartella Git che punta al repository e al ramo utilizzati per i file bundle.
- Confermare che le risorse di origine si trovano nell'area di lavoro e che vengono salvate prima di creare o sincronizzare il bundle.
- Per la distribuzione tra ambienti, verificare che l'area di lavoro di destinazione disponga delle autorizzazioni necessarie e della capacità di computazione.
- Per i job o i notebook che utilizzano i segreti, creare le credenziali denominate richieste nell'area di memorizzazione delle credenziali di destinazione. I file bundle devono fare riferimento alle credenziali per nome o variabile, non devono contenere valori segreti.
- Eseguire il commit e il push delle modifiche ai file bundle dopo la creazione o la sincronizzazione di un bundle in modo che altri ambienti possano estrarre la definizione di bundle più recente.
Crea un gruppo di proprietà (anteprima)
È possibile raggruppare risorse di job e agenti di Oracle AI Data Platform per creare un package che può essere distribuito in un'altra cartella Git.
Elementi generati dopo la creazione del bundle (anteprima)
Dopo la creazione del bundle, Oracle AI Data Platform scrive i file generati nella cartella del bundle.
I nomi esatti dei file variano in base al tipo di risorsa, ma il bundle creato in genere contiene un file manifesto del bundle di livello superiore, definizioni delle risorse, cartelle di artifact e file di override facoltativi.
| Articolo generato | Descrizione |
|---|---|
aidp_workbench.yaml |
File manifesto bundle. Identifica il bundle, le risorse, le variabili e le sezioni target incluse utilizzate durante la distribuzione. |
.aidp/resource_origins.yaml |
Definizioni delle risorse. Descrivere risorse quali job, task notebook, riferimenti di computazione o flussi di agenti. |
.aidp/overrides.yaml |
Sostituire i file o le sezioni di destinazione. Tenere in sospeso i valori che differiscono per ambiente, ad esempio gli identificativi dell'area di lavoro, le impostazioni predefinite dei parametri, i nomi delle credenziali o le chiavi token. |
.aidp/aidp.state.json |
Tiene traccia delle risorse distribuite dal bundle. Utilizzato dalle operazioni di distribuzione e rimozione future. |
jobs/ |
Descrittori job e dipendenze job. |
agentflows/ |
Descrittori agente e dipendenze agente. |
artifacts/ |
Cartelle artifact. Codice copiato, notebook e artifact file di supporto. |
Distribuisci un bundle (anteprima)
È possibile distribuire bundle da una cartella Git per condividere risorse e dipendenze tra aree di lavoro e ambienti.
Sincronizza un bundle (anteprima)
È possibile sincronizzare un bundle per aggiornare le risorse e le dipendenze nel bundle con le modifiche più recenti.
Sync utilizza i metadati di origine registrati del bundle per ricreare il bundle dai job di origine e dai flussi agente acquisiti al momento della creazione del bundle. I metadati di origine vengono memorizzati in .aidp/resource_origins.yaml e devono corrispondere all'istanza e all'area di lavoro richieste. L'operazione aggiorna il contenuto del bundle controllato dall'origine conservando l'identità del bundle e i metadati runtime.
Durante la sincronizzazione, il servizio posiziona nell'area intermedia uno snapshot del bundle aggiornato nella directory .aidp del bundle, confronta i descrittori esistenti e posizionati nell'area intermedia, conserva gli alias delle variabili esistenti e sostituisce i riferimenti, ove possibile, unisce le variabili predefinite del file manifesto esistenti e quindi promuove i file aggiornati controllati dall'origine nella radice del bundle.
Sync conserva i file runtime di distribuzione specifici dell'ambiente, ad esempio .aidp/overrides.yaml e .aidp/aidp.state.json. Questi file non vengono sostituiti dallo snapshot di origine aggiornato.
- Un notebook, un job, un flusso di agenti in bundle, un riferimento di computazione, un parametro o una dipendenza modificati nell'area di lavoro di origine.
- Un job in bundle punta ora a un notebook diverso o ha aggiornato i parametri del task.
- Configurazione di un agente, parametro del prompt, impostazione del modello o dipendenza di computazione AI modificata.
- È necessario che la cartella Git contenga i file bundle generati più recenti prima di eseguire il push in un altro ambiente.
- Passare al bundle che si desidera sincronizzare nell'area di lavoro.
- Fare clic su Azioni.
- Fare clic su Sincronizza. Si riceve una notifica al termine della sincronizzazione.
Flusso di lavoro promozione consigliato per i bundle
Si consiglia di seguire un flusso di lavoro di sviluppo, package, versione, pull, configurazione, distribuzione e convalida per i bundle Git in Oracle AI Data Platform.
| Fase | Azione | Risultati |
|---|---|---|
| Sviluppare | Creare o aggiornare notebook, job, impostazioni di computazione o flussi di agenti nell'area di lavoro di origine. | Le risorse di origine contengono il funzionamento previsto più recente. |
| Package | Creare il bundle o eseguire Sync su un bundle esistente. | I file bundle generati riflettono le risorse e le dipendenze di origine correnti. |
| Version | Rivedere, eseguire il commit e eseguire il push della cartella bundle tramite la cartella Git. | Il repository remoto contiene la definizione di bundle distribuibile. |
| Pull | Nell'area di lavoro di destinazione, estrarre le modifiche apportate alla cartella Git. | L'area di lavoro di destinazione contiene i file bundle più recenti. |
| Configura | Impostare valori specifici della destinazione, ad esempio chiave area di lavoro, impostazioni predefinite dei parametri, nome credenziale, chiave token o impostazioni runtime. | Il bundle è pronto per l'ambiente di destinazione. |
| Distribuire | Aprire la scheda Distribuzione bundle e fare clic su Distribuisci. | Workbench crea o aggiorna le risorse distribuite. |
| Convalida | Eseguire i job distribuiti o eseguire il test dei flussi degli agenti distribuiti e ispezionare i log o l'output. | L'ambiente di destinazione viene verificato prima che la promozione continui. |
Variabili bundle (anteprima)
Utilizzare le variabili bundle quando un bundle richiede valori di tempo di distribuzione che possono essere modificati per ogni ambiente di destinazione senza modificare la definizione della risorsa.
Per iniziare a utilizzare le variabili con i bundle, è necessario definire i nomi delle variabili nel file aidp_workbench.yaml del bundle con valori predefiniti e, se necessario, sostituzioni specifiche dell'ambiente. È quindi possibile fare riferimento a tali variabili dai file di definizione generati.
Workflow variabile di esempio
- Definire i nomi delle variabili in
defaults > variablesinaidp_workbench.yaml. - Facoltativamente, definire valori specifici dell'ambiente in
targets > <environment> > variablesnello stesso fileaidp_workbench.yaml. - Utilizzare le sostituzioni di destinazione per impostare i valori del tempo di distribuzione, ad esempio un'area di sviluppo, un'area QA, un'area di produzione, un nome schema, un nome credenziale, una chiave token o un parametro predefinito.
- Quando non viene trovato alcun ambiente di destinazione corrispondente, Oracle AI Data Platform utilizza il valore della variabile predefinito di helpp_workbench.yaml.
- Utilizzare la variabile in qualsiasi file di definizione generato, ad esempio una definizione di job, una definizione di computazione, una definizione di task o un altro file di definizione YAML.
- Fare riferimento alla variabile con ${var.<<variable_name>>}, sostituendo <<variable_name>> con il nome della variabile effettiva definito in aidp_workbench.yaml.
- Utilizzare la sintassi segnaposto specifica della risorsa in posizioni quali prompt agente o definizioni di strumenti quando l'interfaccia utente prevede un segnaposto denominato.
- Per le modifiche temporanee di sola distribuzione, creare il file .aidp/overrides.yaml e definire i valori delle variabili.
Sintassi variabile bundle
Le definizioni delle variabili devono essere scritte in aidp_workbench.yaml. Gli altri file di definizione del bundle devono fare riferimento solo al nome della variabile.
| Definizione | Sintassi | Esempio |
|---|---|---|
Definizione variabile in aidp_workbench.yaml
|
|
|
Override specifico della destinazione inaidp_workbench.yaml |
|
|
| Riferimento variabile in un file di definizione | ${var.<<variable_name>>} |
value: "${var.deployment_region}" |
| Segnaposto denominato in un prompt agente o in un campo strumento | {{variable_name}} |
Generate a summary about {{topic}}. |
Esempio: variabile parametro job
bundle:
name: namedVariableJobDemo
resources:
jobs:
- namedVariableJobDemo
defaults:
variables:
job_param_value_default: "cloud data governance"
jobs:
namedVariableJobDemo:
tasks:
- taskKey: Task_956691
parameters:
- name: param_key
value: "${var.job_param_value_default}" Un task notebook può leggere il valore risolto tramite il nome del parametro utilizzato dal job:
param_value = odiUtils.parameters.getParameter("param_key", "fallback value")
print(param_value)Esempio: definizione variabile aidp_workbench.yaml
agent_topic_default in aidp_workbench.yaml. Il valore predefinito si applica quando non viene trovato alcun ambiente di destinazione corrispondente oppure quando la variabile non viene fornita da un ambiente selezionato o da un override temporaneo. Ogni destinazione può sostituire lo stesso nome di variabile per l'area di lavoro.defaults:
variables:
agent_topic_default: "Oracle AI Data Platform"
targets:
dev:
- aidp_ocid: "ocid1.aidataplatformdev.oc1.iad.exampledev"
workspace_key: "6271b138-6f2c-4e8c-a9e5-013e17079955"
variables:
agent_topic_default: "AIDP Dev Workspace"
qa:
- aidp_ocid: "ocid1.aidataplatformdev.oc1.iad.exampleqa"
workspace_key: "daa0e9b5-f8d7-4ae8-b728-2984e68a74c0"
variables:
agent_topic_default: "AIDP QA Workspace"
prod:
- aidp_ocid: "ocid1.aidataplatform.oc1.iad.exampleprod"
workspace_key: "83be5b8c-bb8d-4ec4-a8fb-16b50b0e4d4c"
variables:
agent_topic_default: "AIDP Production Workspace" Qualsiasi file di definizione del bundle che supporti le variabili del bundle può quindi fare riferimento allo stesso nome di variabile. Ad esempio:
tasks/agentTopic.task.yaml
parameters:
- name: topic
value: "${var.agent_topic_default}"Esempio: nomi file e risoluzione
testNamedVarBundleJob/
aidp_workbench.yaml
jobs/
namedVariableJobDemo.job.json
artifacts/
namedVarNotebookDemo.ipynb| File | Cosa contiene | Valore variabile o risolto |
|---|---|---|
aidp_workbench.yaml |
Definisce la variabile sotto valori predefiniti > variabili e sostituzioni di destinazione facoltative. | Variabile: job_param_value_default.
|
jobs/namedVariableJobDemo.job.json |
Utilizza la variabile come valore per il parametro job param_key. | Riferimento: ${var.job_param_value_default}.
|
artifacts/namedVarNotebookDemo.ipynb |
Legge il parametro del job risolto in runtime. | Il notebook legge param_key dopo la risoluzione.
|
aidp_workbench.yaml:defaults:
variables:
job_param_value_default: "cloud data governance"
targets:
dev:
variables:
job_param_value_default: "space tourism"
qa:
variables:
job_param_value_default: "data quality validation"
prod:
variables:
job_param_value_default: "customer operations"La definizione del job può quindi utilizzare lo stesso nome di variabile nei job/namedVariableJobDemo.job.json. La stessa sintassi può essere utilizzata nelle definizioni job, nelle definizioni di computazione, nelle definizioni task e in altri file di definizione YAML generati che supportano le variabili bundle:
"parameters": [
{
"name": "param_key",
"value": "${var.job_param_value_default}"
}
]| Destinazione di distribuzione | Risoluzione variabile | Ricezioni notebook |
|---|---|---|
| Nessuna destinazione corrispondente | Utilizza l'impostazione predefinita da helpp_workbench.yaml. | param_key = cloud data governance
|
| disp. | Utilizza l'override della destinazione di sviluppo. | param_key = space tourism
|
| qa | Utilizza override destinazione qa. | param_key = data quality validation |
| prod | Utilizza override destinazione prod. | param_key = customer operations |
Ordine di risoluzione
Quando .aidp/overrides.yaml fornisce un valore variabile, AI Data Platform utilizza tale valore temporaneo per la distribuzione successiva. In caso contrario, AI Data Platform risolve prima la variabile dalla destinazione selezionata. Se non viene trovato alcun ambiente di destinazione corrispondente o la destinazione selezionata non sostituisce la variabile, AI Data Platform torna a defaults > variables in aidp_workbench.yaml. Se non è disponibile alcun valore per la variabile di riferimento, la distribuzione o l'esecuzione del job possono non riuscire prima di utilizzare il valore di fallback del notebook.
Sostituzioni temporanee per la distribuzione successiva
Le definizioni in helpp_workbench.yaml sono sufficienti per la normale promozione bundle. Se un utente deve sostituire temporaneamente una variabile, creare il file .aidp/overrides.yaml nella cartella del bundle e definire i valori delle variabili. AI Data Platform utilizza tali valori durante la distribuzione successiva.
.aidp/
overrides.yamlvariables:
agent_topic_default: "tuesday"| File | Valore di esempio | In caso di utilizzo |
|---|---|---|
aidp_workbench.yaml defaults
|
Oracle AI Data Platform | Utilizzato quando la variabile non viene fornita da un file di destinazione o di override corrispondente. |
aidp_workbench.yaml target dev |
Area di lavoro sviluppo AIDP | Utilizzato durante la distribuzione in dev e non è presente alcuna sostituzione temporanea. |
.aidp/overrides.yaml |
martedì | Utilizzato come valore temporaneo durante la distribuzione successiva. |
Nota
Utilizzare.aidp/overrides.yaml per i valori di distribuzione temporanei. Mantenere le impostazioni predefinite permanenti e i valori specifici dell'ambiente in aidp_workbench.yaml in modo che il bundle rimanga riproducibile tramite Git.
Esempio: variabile prompt agente
Per il testo del prompt di flusso dell'agente o le definizioni degli strumenti che supportano i segnaposto denominati, utilizzare due parentesi graffe attorno al nome della variabile.
Prompt text:
You are a demo assistant. For the given {{topic}}, generate 3 short bullet points explaining why it matters.
Tool parameter:
Name: /{{topic}}
Default value: sunday Nota
Come procedura ottimale, è consigliabile utilizzare le variabili per i valori che si prevede cambieranno tra le distribuzioni. Evitare di incorporare valori specifici dell'ambiente direttamente nei notebook, nei job o nel testo del flusso dell'agente quando una variabile può trasferire il valore.Esempio: workflow senza computazione
È possibile creare un bundle per un workflow che non crei automaticamente un cluster di computazione come parte della distribuzione. Creare innanzitutto una variabile in aidp_workbench.yaml:
defaults:
variables:
job_compute_key: "select_compute"jobs/, individuare il file di job <JobName>.job.json. Modificare il file di job per sostituire il valore "clusterKey" con la nuova variabile creata:"clusterKey" : "${var.job_compute_key}",Variabili bundle e area di memorizzazione credenziali (anteprima)
È possibile utilizzare le variabili con l'area di memorizzazione delle credenziali quando un job o un notebook in bundle deve cercare un segreto in runtime.
Le variabili devono contenere il nome della credenziale e la chiave token. Il valore segreto effettivo deve rimanere nell'area di memorizzazione delle credenziali di destinazione e non deve essere sottoposto a commit in Git.
Workflow di esempio: utilizzo di variabili con area di memorizzazione delle credenziali
- Creare la credenziale e la chiave token nell'area di memorizzazione delle credenziali.
- Definire le variabili per il nome della credenziale e la chiave token.
- Passare tali variabili nel job o nel notebook come parametri.
- In fase di runtime, il notebook legge i parametri e chiama l'API delle credenziali per recuperare il segreto. Se il nome della credenziale, la chiave del token o le autorizzazioni sono errati, il job può non riuscire con un errore di ricerca della credenziale.
Nota
Non documentare o eseguire il commit dei valori segreti nei file bundle. La configurazione del bundle deve fare riferimento ai nomi delle credenziali, alle chiavi token e alle variabili di destinazione; l'area di memorizzazione delle credenziali rimane l'origine del materiale segreto.Esempio: variabili chiave nome credenziale e token
bundle:
name: credentialVariableDemoBundle
resources:
jobs:
- credentialLookupJob
defaults:
variables:
cred_key: default_credential_name
token_key: default_token_key
targets:
dev:
workspace_key: dev_workspace
variables:
cred_key: dev_credential_store_entry
token_key: dev_token
qa:
workspace_key: qa_workspace
variables:
cred_key: qa_credential_store_entry
token_key: qa_token
prod:
workspace_key: prod_workspace
variables:
cred_key: prod_credential_store_entry
token_key: prod_token
jobs:
credentialLookupJob:
tasks:
- taskKey: Task_854239
parameters:
- name: cred_key
value: "${var.cred_key}"
- name: token_key
value: "${var.token_key}" Il notebook legge i valori dei parametri e li utilizza per cercare il segreto dall'area di memorizzazione delle credenziali:
cred_name = odiUtils.parameters.getParameter("cred_key", "defaultCredValue")
token_name = odiUtils.parameters.getParameter("token_key", "defaultTokenValue")
secret = aidpUtils.secrets.get(name=cred_name, key=token_name)
if secret:
print("Credential lookup succeeded")
else:
raise Exception("Credential lookup failed")| Ambiente | valore cred_key | valore token_key | Requisito area di memorizzazione credenziali |
|---|---|---|---|
| disp. | dev_credential_store_entry | dev_token | Crea dev_credential_store_entry con chiave dev_token. |
| qa | qa_credential_store_entry | qa_token | Crea qa_credential_store_entry con chiave qa_token. |
| prod | prod_credential_store_entry | prod_token | Crea prod_credential_store_entry con chiave prod_token. |
Rimuovi un bundle (anteprima)
È possibile rimuovere un bundle distribuito per rimuovere le risorse del bundle dall'area di lavoro.
- Passare al bundle per il quale si desidera rimuovere le risorse nell'area di lavoro.
- Fare clic sulla scheda Distribuzione.
- Fare clic su Rimuovi.
- Immettere Rimuovi nel prompt. Fare clic su Rimuovi.
Risoluzione dei problemi relativi ai bundle (anteprima)
Se si verificano problemi durante la creazione e la gestione dei bundle Git, controllare l'elenco di problemi riportato di seguito per individuare potenziali soluzioni.
| Sintomo | Causa probabile | Azione consigliata |
|---|---|---|
| Creazione bundle non disponibile o impossibile creare il bundle. | L'utente non si trova in una cartella Git oppure non dispone delle autorizzazioni necessarie per l'area di lavoro. | Passare a una cartella Git e confermare che l'utente può creare risorse dell'area di lavoro. |
| Sincronizzazione completata, ma l'aggiornamento non è visibile in un altro ambiente. | I file bundle aggiornati non sono stati sottoposti a commit, push o pull nella cartella Git di destinazione. | Eseguire il commit e il push dalla cartella Git di origine, quindi eseguire il pull nell'area di lavoro di destinazione prima di eseguire la distribuzione. |
| La scheda Distribuzione non mostra elementi distribuiti. | Distribuzione del bundle non ancora eseguita oppure distribuzione non completata. | Fare clic su Distribuisci e attendere la notifica di completamento. Rivedere i log se la distribuzione non riesce. |
| Job distribuito non riuscito con un errore di ricerca delle credenziali. | Il nome della credenziale di destinazione, la chiave token o l'autorizzazione di accesso non corrispondono alla configurazione del bundle. | Creare la credenziale nell'area di memorizzazione delle credenziali di destinazione o aggiornare le variabili di destinazione prima di ridistribuire. |
| La distribuzione del flusso dell'agente non riesce o inizia con la computazione inattiva. | L'ambiente di destinazione potrebbe non avere impostazioni di computazione AI, area, modello o dipendenza compatibili. | Esamina le sostituzioni di destinazione, lo stato di computazione, la disponibilità del modello e i log di distribuzione. |
| Le modifiche apportate a un notebook di origine o a un flusso agente non vengono applicate dopo la distribuzione. | Il bundle è stato distribuito senza prima eseguire la sincronizzazione dalla risorsa di origine aggiornata. | Eseguire Sync sul bundle, eseguire il commit e il push dei file bundle aggiornati, estrarli nella destinazione, quindi eseguire di nuovo la distribuzione. |