Utilizzare l'ottimizzazione e la valutazione per migliorare le prestazioni degli LLM
.Questo documento mostra come creare un modello remoto di BigQuery ML che fa riferimento a un text-bison
modello di base di Vertex AI.
Potrai quindi utilizzare l'ottimizzazione supervisionata per ottimizzare il modello con nuovi dati di addestramento e poi valutarlo con la funzione ML.EVALUATE
.
Ciò può aiutarti ad affrontare gli scenari in cui è necessario personalizzare il modello Vertex AI ospitato, ad esempio quando il comportamento previsto del modello è difficile da definire in modo conciso in un prompt o quando i prompt non producono risultati previsti in modo sufficiente. Anche l'ottimizzazione supervisionata influisce sul modello nei seguenti modi:
- Guida il modello per restituire stili di risposta specifici, ad esempio essere più conciso o più dettagliato.
- Insegna al modello nuovi comportamenti, ad esempio rispondendo a prompt come utente tipo specifico.
- Determina l'aggiornamento del modello con nuove informazioni.
Autorizzazioni obbligatorie
Per creare una connessione, devi disporre del seguente ruolo di Identity and Access Management (IAM):
roles/bigquery.connectionAdmin
Per concedere le autorizzazioni all'account di servizio della connessione, devi disporre della seguente autorizzazione:
resourcemanager.projects.setIamPolicy
Per creare il modello utilizzando BigQuery ML, devi disporre delle seguenti autorizzazioni IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:
bigquery.tables.getData
in tavolabigquery.models.getData
sul modellobigquery.jobs.create
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery, BigQuery Connection, Vertex AI, and Compute Engine.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- BigQuery: You incur costs for the queries that you run in BigQuery.
- BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
- Vertex AI: You incur costs for calls to and
supervised tuning of the
text-bison
model.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Per maggiori informazioni, consulta le seguenti risorse:
crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML:
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del tuo progetto.
Fai clic su
Visualizza azioni > Crea set di dati.Nella pagina Crea set di dati, segui questi passaggi:
In ID set di dati, inserisci
bqml_tutorial
.Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).
I set di dati pubblici vengono archiviati in
US
più regioni. Per semplicità, archivia il tuo set di dati nella stessa località.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
Crea una connessione
Crea una connessione alle risorse Cloud e recupera l'ID dell'account di servizio della connessione. Crea la connessione nella stessa località del set di dati che hai creato nel passaggio precedente.
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Per creare una connessione, fai clic su
Aggiungi e poi su Connessioni a origini dati esterne.Nell'elenco Tipo di connessione, seleziona Modelli remoti Vertex AI, funzioni remote e BigLake (risorsa Cloud).
Nel campo ID connessione, inserisci un nome per la connessione.
Fai clic su Crea connessione.
Fai clic su Vai alla connessione.
Nel riquadro Informazioni sulla connessione, copia l'ID account di servizio per utilizzarlo in un passaggio successivo.
bq
In un ambiente a riga di comando, crea una connessione:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
Il parametro
--project_id
sostituisce il progetto predefinito.Sostituisci quanto segue:
REGION
: la tua regione di connessionePROJECT_ID
: l'ID del tuo progetto Google CloudCONNECTION_ID
: un ID per la tua connessione
Quando crei una risorsa di connessione, BigQuery crea un account di servizio di sistema univoco e lo associa alla connessione.
Risoluzione dei problemi: se viene visualizzato il seguente errore di connessione, aggiorna Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupera e copia l'ID account di servizio per utilizzarlo in un passaggio successivo:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
L'output è simile al seguente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Aggiungi la seguente sezione al tuo file main.tf
.
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }Sostituisci quanto segue:
CONNECTION_ID
: un ID per la tua connessionePROJECT_ID
: l'ID del tuo progetto Google CloudREGION
: la tua regione di connessione
Concedi all'account di servizio l'accesso
Concedi al tuo account di servizio il ruolo Agente di servizio Vertex AI in modo che l'account di servizio possa accedere a Vertex AI. La mancata concessione di questo ruolo genera un errore. Seleziona una delle seguenti opzioni:
Console
Vai alla pagina IAM e amministrazione.
Fai clic su
Concedi l'accesso.Viene visualizzata la finestra di dialogo Aggiungi entità.
Nel campo Nuove entità, inserisci l'ID account di servizio che hai copiato in precedenza.
Fai clic su Seleziona un ruolo.
In Filtro, digita
Vertex AI Service Agent
e seleziona quel ruolo.Fai clic su Salva.
gcloud
Usa il comando gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del tuo progettoMEMBER
: l'ID account di servizio che hai copiato in precedenza
L'account di servizio associato alla connessione è un'istanza dell'agente di servizio per la delega della connessione BigQuery, quindi è accettabile assegnargli un ruolo di agente di servizio.
Concedi all'account di servizio predefinito di Compute Engine l'accesso
Quando abiliti l'API Compute Engine, all'account di servizio predefinito di Compute Engine viene concesso automaticamente il ruolo Editor sul progetto, a meno che tu non abbia disattivato questo comportamento per il tuo progetto. In questo caso, devi concedere nuovamente il ruolo Editor all'accesso all'account di servizio predefinito di Compute Engine, in modo che abbia autorizzazioni sufficienti per creare e ottimizzare un modello remoto.
Console
Vai alla pagina IAM e amministrazione.
Fai clic su
Concedi l'accesso.In Nuove entità, inserisci l'ID account di servizio, ovvero
PROJECT_NUMBER-compute@developer.gserviceaccount.com
.Fai clic su Seleziona un ruolo.
In Seleziona un ruolo, scegli Di base e poi seleziona Editor.
Fai clic su Salva.
gcloud
Usa il comando gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/editor' --condition=None
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del progetto.MEMBER
: l'ID dell'account di servizio, che èPROJECT_NUMBER-compute@developer.gserviceaccount.com
.
Crea l'agente di servizio di ottimizzazione
Per creare un'istanza dell'agente di servizio Ottimizzazione di AI Platform, segui questi passaggi:
Usa il comando
gcloud beta services identity create
per creare l'agente di servizio di ottimizzazione:gcloud beta services identity create --service=aiplatform.googleapis.com --project=PROJECT_NUMBER
Sostituisci
PROJECT_NUMBER
con il numero del tuo progetto.Utilizza il comando
gcloud projects add-iam-policy-binding
per concedere all'agente di servizio di ottimizzazione il ruolo Agente di servizio Vertex AI (roles/aiplatform.serviceAgent
):gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com' --role='roles/aiplatform.serviceAgent'
Sostituisci
PROJECT_NUMBER
con il numero del tuo progetto.
Crea tabelle di test
Crea tabelle di dati di addestramento e valutazione basati sul set di dati pubblico
MTSamples dei referti medici trascritti.
Questo set di dati ha una colonna input_text
che contiene la trascrizione medica e una colonna output_text
contenente l'etichetta che descrive meglio la categoria della trascrizione, ad esempio Allergy/Immunology
, Dentistry
o Cardiovascular/Pulmonary
. Crea anche una tabella con i dati
dei prompt per la classificazione della trascrizione medica.
Importerai i dati della trascrizione medica da un bucket Cloud Storage pubblico.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui la seguente istruzione per creare una tabella di dati di valutazione:
LOAD DATA INTO `bqml_tutorial.medical_transcript_eval` FROM FILES(format='NEWLINE_DELIMITED_JSON', uris = ['gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl']);
Nell'editor query, esegui questa istruzione per creare una tabella di dati di addestramento:
LOAD DATA INTO `bqml_tutorial.medical_transcript_train` FROM FILES(format='NEWLINE_DELIMITED_JSON', uris = ['gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl']);
Nell'editor query, esegui questa istruzione per creare una tabella di prompt:
CREATE OR REPLACE TABLE `bqml_tutorial.transcript_classification` AS (SELECT 'Please assign a label for the given medical transcript from among these labels [Allergy / Immunology, Autopsy, Bariatrics, Cardiovascular / Pulmonary, Chiropractic, Consult - History and Phy., Cosmetic / Plastic Surgery, Dentistry, Dermatology, Diets and Nutritions, Discharge Summary, ENT - Otolaryngology, Emergency Room Reports, Endocrinology, Gastroenterology, General Medicine, Hematology - Oncology, Hospice - Palliative Care, IME-QME-Work Comp etc., Lab Medicine - Pathology, Letters, Nephrology, Neurology, Neurosurgery, Obstetrics / Gynecology, Office Notes, Ophthalmology, Orthopedic, Pain Management, Pediatrics - Neonatal, Physical Medicine - Rehab, Podiatry, Psychiatry / Psychology, Radiology, Rheumatology, SOAP / Chart / Progress Notes, Sleep Medicine, Speech - Language, Surgery, Urology].' AS prompt);
crea un modello di riferimento
Crea un modello remoto sul modello Vertex AI text-bison
da utilizzare per classificare le trascrizioni mediche.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui la seguente istruzione per creare un modello remoto:
CREATE OR REPLACE MODEL `bqml_tutorial.text_bison_001` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS (ENDPOINT ='text-bison@001');
Sostituisci quanto segue:
LOCATION
: posizione della connessione.CONNECTION_ID
: l'ID della tua connessione BigQuery.Quando visualizza i dettagli della connessione nella console Google Cloud,
CONNECTION_ID
è il valore nell'ultima sezione dell'ID connessione completo mostrato in ID connessione, ad esempioprojects/myproject/locations/connection_location/connections/myconnection
.
Il completamento della query richiede diversi secondi, dopodiché il modello
text_bison_001
viene visualizzato nel set di datibqml_tutorial
nel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non ci sono risultati della query.
Controlla le prestazioni del modello di riferimento
Esegui la funzione ML.GENERATE_TEXT
con il modello remoto per vedere come si comporta sui dati di valutazione senza alcuna ottimizzazione.
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT * FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.text_bison_001`, ( SELECT CONCAT( (SELECT prompt from `bqml_tutorial.transcript_classification`), ' ', input_text) AS prompt, output_text AS label FROM `bqml_tutorial.medical_transcript_eval` ), STRUCT(TRUE AS flatten_json_output)) ORDER BY ml_generate_text_llm_result;
Se esamini i dati di output e confronti i valori
ml_generate_text_llm_result
elabel
, noti che, sebbene il modello di base preveda correttamente molte classificazioni delle trascrizioni, alcune classificazioni in modo errato. Di seguito è riportato un esempio rappresentativo di output non corretto. In questo esempio, la classificazione corretta èCardiovascular / Pulmonary
, nonRadiology
.+-----------------------------+---------------------------------+-------------------------------------------------------------------------+----------------------------+ | ml_generate_text_llm_result | ml_generate_text_rai_result | ml_generate_text_status | prompt | label | +-----------------------------+---------------------------------+-------------------------------------------------------------------------+----------------------------+ | Radiology | {"blocked":false,"categories": | | Please assign a label for the given medical | Cardiovascular / Pulmonary | | | ["Derogatory","Health", | | transcript from among these labels [Allergy / | | | | "Insult","Public Safety",... | | Immunology, Autopsy, Bariatrics, | | | | | | Cardiovascular / Pulmonary, Chiropractic, | | | | | | Consult - History and Phy., Cosmetic / | | | | | | Plastic Surgery, Dentistry, Dermatology, | | | | | | Diets and Nutritions, Discharge Summary, ENT | | | | | | - Otolaryngology, Emergency Room Reports, | | | | | | Endocrinology, Gastroenterology, General | | | | | | Medicine, Hematology - Oncology, Hospice - | | | | | | Palliative Care, IME-QME-Work Comp etc., | | | | | | Lab Medicine - Pathology, Letters, | | | | | | Nephrology, Neurology, Neurosurgery, | | | | | | Obstetrics / Gynecology, Office Notes, | | | | | | Ophthalmology, Orthopedic, Pain Management, | | | | | | Pediatrics - Neonatal, Physical Medicine - | | | | | | Rehab, Podiatry, Psychiatry / Psychology, | | | | | | Radiology, Rheumatology, SOAP / Chart / | | | | | | Progress Notes, Sleep Medicine, Speech - | | | | | | Language, Surgery, Urology]. | | | | | | TRANSCRIPT: | | | | | | INDICATIONS FOR PROCEDURE:, The patient has | | | | | | presented with atypical type right arm | | | | | | discomfort and neck discomfort. She had | | | | | | noninvasive vascular imaging demonstrating | | | | | | suspected right subclavian stenosis. Of note, | | | | | | there was bidirectional flow in the right | | | | | | vertebral artery, as well as 250 cm... | | +-----------------------------+---------------------------------+-------------------------------------------------------------------------+----------------------------+
valuta il modello di riferimento
Per eseguire una valutazione più dettagliata delle prestazioni del modello, utilizza la funzione ML.EVALUATE
.
Questa funzione calcola le metriche del modello, come precisione, richiamo e punteggio F1, per confrontare le risposte del modello con quelle ideali.
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.text_bison_001`, ( SELECT CONCAT( (SELECT prompt FROM `bqml_tutorial.transcript_classification`), ' ', input_text) AS input_text, output_text FROM `bqml_tutorial.medical_transcript_eval` ), STRUCT('classification' AS task_type)) ORDER BY label;
L'output è simile al seguente:
+------------------------------+----------------------------------+-------------------------------------------------------------------------+ | precision | recall | f1_score | label | evaluation_status | +---------------------+---------------------+---------------------+----------------------------+--------------------------------------------+ | 1.0 | 0.66666666666666663 | 0.8 | Allergy / Immunology | { | | | | | | "num_successful_rows": 164, | | | | | | "num_total_rows": 164 | | | | | | } | +---------------------+---------------------+ --------------------+----------------------------+--------------------------------------------+ | 1.0 | 1.0 | 1.0 | Autopsy | { | | | | | | "num_successful_rows": 164, | | | | | | "num_total_rows": 164 | | | | | | } | +---------------------+---------------------+--------------- -----+----------------------------+--------------------------------------------+ | 1.0 | 0.66666666666666663 | 0.8 | Bariatrics | { | | | | | | "num_successful_rows": 164, | | | | | | "num_total_rows": 164 | | | | | | } | +---------------------+---------------------+---------------------+----------------------------+--------------------------------------------+
Se esamini i risultati nella colonna f1_score
, puoi vedere che le prestazioni del modello variano tra le classi di trascrizione. Valori più alti per il punteggio F1
indicano prestazioni migliori. Il modello di base ha un buon rendimento per la maggior parte delle classi,
ma ha prestazioni scarse per altri, ad esempio le classi Cardiovascular / Pulmonary
e
Chiropractic
. In base a ciò, puoi vedere che vale la pena eseguire un'ottimizzazione supervisionata per vedere se è possibile migliorare le prestazioni del modello per questo caso d'uso.
Crea un modello ottimizzato
Crea un modello remoto molto simile a quello creato in Crea un modello, ma questa volta specificando la clausola AS SELECT
per fornire i dati di addestramento al fine di ottimizzare il modello.
Il completamento di questa query potrebbe richiedere un paio d'ore.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, esegui la seguente istruzione per creare un modello remoto:
CREATE OR REPLACE MODEL `bqml_tutorial.text_bison_001_medical_transcript_tuned` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS ( endpoint = 'text-bison@001', max_iterations = 300, data_split_method = 'no_split') AS SELECT CONCAT( (SELECT prompt FROM `bqml_tutorial.transcript_classification`), ' ', input_text) AS prompt, output_text AS label FROM `bqml_tutorial.medical_transcript_train`;
Sostituisci quanto segue:
LOCATION
: posizione della connessione.CONNECTION_ID
: l'ID della tua connessione BigQuery.Quando visualizza i dettagli della connessione nella console Google Cloud,
CONNECTION_ID
è il valore nell'ultima sezione dell'ID connessione completo mostrato in ID connessione, ad esempioprojects/myproject/locations/connection_location/connections/myconnection
.
Il completamento della query potrebbe richiedere diverse ore, dopodiché il modello
text_bison_001_medical_transcript_tuned
viene visualizzato nel set di datibqml_tutorial
nel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non ci sono risultati della query.
Controlla le prestazioni del modello ottimizzato
Esegui la funzione ML.GENERATE_TEXT
per vedere le prestazioni del modello ottimizzato sui
dati di valutazione.
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT * FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.text_bison_001_medical_transcript_tuned`, ( SELECT CONCAT( (SELECT prompt from `bqml_tutorial.transcript_classification`), ' ', input_text) AS prompt, output_text AS label FROM `bqml_tutorial.medical_transcript_eval` ), STRUCT(TRUE AS flatten_json_output)) ORDER BY ml_generate_text_llm_result;
Se esamini i dati di output, noterai che il modello ottimizzato classifica correttamente più trascrizioni. L'esempio esaminato in precedenza è classificato correttamente come
Cardiovascular/ Pulmonary
.+-----------------------------+---------------------------------+-------------------------------------------------------------------------+----------------------------+ | ml_generate_text_llm_result | ml_generate_text_rai_result | ml_generate_text_status | prompt | label | +-----------------------------+---------------------------------+-------------------------------------------------------------------------+----------------------------+ | Cardiovascular/Pulmonary | {"blocked":false,"categories": | | Please assign a label for the given medical | Cardiovascular / Pulmonary | | | ["Derogatory","Health", | | transcript from among these labels [Allergy / | | | | "Insult","Public Safety",... | | Immunology, Autopsy, Bariatrics, | | | | | | Cardiovascular / Pulmonary, Chiropractic, | | | | | | Consult - History and Phy., Cosmetic / | | | | | | Plastic Surgery, Dentistry, Dermatology, | | | | | | Diets and Nutritions, Discharge Summary, ENT | | | | | | - Otolaryngology, Emergency Room Reports, | | | | | | Endocrinology, Gastroenterology, General | | | | | | Medicine, Hematology - Oncology, Hospice - | | | | | | Palliative Care, IME-QME-Work Comp etc., | | | | | | Lab Medicine - Pathology, Letters, | | | | | | Nephrology, Neurology, Neurosurgery, | | | | | | Obstetrics / Gynecology, Office Notes, | | | | | | Ophthalmology, Orthopedic, Pain Management, | | | | | | Pediatrics - Neonatal, Physical Medicine - | | | | | | Rehab, Podiatry, Psychiatry / Psychology, | | | | | | Radiology, Rheumatology, SOAP / Chart / | | | | | | Progress Notes, Sleep Medicine, Speech - | | | | | | Language, Surgery, Urology]. | | | | | | TRANSCRIPT: | | | | | | INDICATIONS FOR PROCEDURE:, The patient has | | | | | | presented with atypical type right arm | | | | | | discomfort and neck discomfort. She had | | | | | | noninvasive vascular imaging demonstrating | | | | | | suspected right subclavian stenosis. Of note, | | | | | | there was bidirectional flow in the right | | | | | | vertebral artery, as well as 250 cm... | | +-----------------------------+---------------------------------+-------------------------------------------------------------------------+----------------------------+
valuta il modello ottimizzato
Utilizza la funzione ML.EVALUATE
per confrontare le risposte del modello ottimizzato
con le risposte ideali.
Nella console Google Cloud, vai alla pagina BigQuery.
Esegui la seguente istruzione nell'editor query:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.text_bison_001_medical_transcript_tuned`, ( SELECT CONCAT( (SELECT prompt from `bqml_tutorial.transcript_classification`), ' ', input_text) AS prompt, output_text AS label FROM `bqml_tutorial.medical_transcript_eval` ), STRUCT('classification' AS task_type)) ORDER BY label;
L'output è simile al seguente:
+------------------------------+----------------------------------+-------------------------------------------------------------------------+ | precision | recall | f1_score | label | evaluation_status | +---------------------+---------------------+---------------------+----------------------------+--------------------------------------------+ | 0.8571428571428571 | 0.66666666666666663 | 0.75 | Dermatology | { | | | | | | "num_successful_rows": 164, | | | | | | "num_total_rows": 164 | | | | | | } | +---------------------+---------------------+ --------------------+----------------------------+--------------------------------------------+ | 0.54545454545454541 | 0.4 | 0.46153846153846156 | Discharge Summary | { | | | | | | "num_successful_rows": 164, | | | | | | "num_total_rows": 164 | | | | | | } | +---------------------+---------------------+--------------- -----+----------------------------+--------------------------------------------+ | 1.0 | 1.0 | 1.0 | Diets and Nutritions | { | | | | | | "num_successful_rows": 164, | | | | | | "num_total_rows": 164 | | | | | | } | +---------------------+---------------------+---------------------+----------------------------+--------------------------------------------+
Puoi notare che, anche se il set di dati di addestramento ha utilizzato solo 519 esempi, c'è un netto miglioramento delle prestazioni. I punteggi F1 sulle etichette in cui il modello di base non ha funzionato altrettanto bene sono migliorati, con la media dei punteggi F1 in tutte le etichette che è aumentata da 0,54 a 0,63.
Esegui la pulizia
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.