

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Algoritmo XGBoost con Amazon AI SageMaker
<a name="xgboost"></a>

[XGBoost](https://github.com/dmlc/xgboost) (eXtreme Gradient Boosting) è un'implementazione open source popolare ed efficiente dell'algoritmo degli alberi di gradient boosting. Il potenziamento del gradiente è un algoritmo di apprendimento supervisionato che tenta di prevedere con precisione una variabile di destinazione combinando un insieme di stime da un set di modelli più semplici. L’algoritmo XGBoost si rivela efficace nelle competizioni di machine learning per i seguenti motivi:
+ Gestione affidabile di una varietà di tipi di dati, relazioni e distribuzioni.
+ Varietà di iperparametri di cui è possibile eseguire il fine-tuning.

È possibile utilizzare XGBoost per problemi di regressione, classificazione (binaria e multiclass) e ordinamento. 

Puoi utilizzare la nuova versione dell’algoritmo XGBoost anche come:
+ Un algoritmo integrato di Amazon SageMaker AI.
+ Framework per eseguire script di addestramento negli ambienti locali.

Questa implementazione è caratterizzata da impatto minore sulla memoria, migliore registrazione di log, convalida degli iperparametri perfezionata e un set più esteso di metriche rispetto alle versioni originali. Fornisce inoltre un XGBoost `estimator` che esegue uno script di addestramento in un ambiente XGBoost gestito. L'attuale versione di SageMaker AI XGBoost si basa sulle versioni originali di XGBoost 1.0, 1.2, 1.3, 1.5, 1.7 e 3.0.

Per ulteriori informazioni sull'algoritmo Amazon SageMaker AI XGBoost, consulta i seguenti post di blog:
+ [Presentazione del contenitore di algoritmi open source Amazon SageMaker AI XGBoost](https://aws.amazon.com/blogs/machine-learning/introducing-the-open-source-amazon-sagemaker-xgboost-algorithm-container/)
+ [Amazon SageMaker AI XGBoost ora offre formazione sulle GPU completamente distribuita](https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-xgboost-now-offers-fully-distributed-gpu-training/)

## Versioni supportate
<a name="xgboost-supported-versions"></a>

[Per ulteriori dettagli, consulta la nostra politica di supporto.](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-containers-support-policy.html#pre-built-containers-support-policy-ml-framework)
+ Modalità framework (open source): 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1, 3.0-5
+ Modalità algoritmo: 1,2-1, 1,2-2, 1,3-1, 1,5-1, 1,7-1, 3,0-5

**avvertimento**  
A causa della capacità di elaborazione richiesta, la versione 3.0-5 di SageMaker AI XGBoost non è compatibile con le istanze GPU della famiglia di istanze P3 per l'addestramento o l'inferenza.

**avvertimento**  
A causa della compatibilità dei pacchetti, la versione 3.0-5 di AI XGBoost non supporta il debugger. SageMaker SageMaker 

**avvertimento**  
A causa della capacità di calcolo richiesta, la versione 1.7-1 di SageMaker AI XGBoost non è compatibile con le istanze GPU della famiglia di istanze P2 per l'addestramento o l'inferenza.

**avvertimento**  
Modalità di isolamento di rete: non aggiornare pip oltre la versione 25.2. Le versioni più recenti possono tentare di recuperare setuptools da PyPI durante l'installazione del modulo.

**Importante**  
Quando recuperate l'URI dell'immagine SageMaker AI XGBoost, non utilizzate o come tag URI dell'immagine. `:latest` `:1` È necessario specificare uno dei contenitori XGBoost con la SageMaker AI-managed versione del pacchetto XGBoost nativa che si desidera utilizzare. [Versioni supportate](#xgboost-supported-versions) [Per trovare la versione del pacchetto migrata nei contenitori SageMaker AI XGBoost, consulta Docker Registry Paths and Example Code.](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths.html) Quindi scegli il tuo Regione AWS e vai alla sezione **XGBoost** (algoritmo).

**avvertimento**  
Le versioni XGBoost 0.90 sono obsolete. Il supporto per gli aggiornamenti di sicurezza o le correzioni di bug per XGBoost 0.90 non sono più disponibili. Si consiglia vivamente di eseguire l’upgrade di XGBoost a una delle versioni più recenti.

**Nota**  
XGBoost v1.1 non è supportato su AI. SageMaker XGBoost 1.1 non è infatti in grado di eseguire la previsione quando l’input di test ha meno funzionalità rispetto ai dati di addestramento negli input di LIBSVM. Questa funzionalità è stata ripristinata in XGBoost v1.2. Prendi in considerazione l'utilizzo di SageMaker AI XGBoost 1.2-2 o versioni successive.

**Nota**  
Puoi utilizzare XGBoost v1.0-1, ma non è ufficialmente supportato.

## Raccomandazione dell’istanza EC2 per l’algoritmo XGBoost
<a name="Instance-XGBoost"></a>

SageMaker AI XGBoost supporta l'addestramento e l'inferenza di CPU e GPU. I consigli sulle istanze dipendono dalle esigenze di addestramento e inferenza, nonché dalla versione dell'algoritmo XGBoost. Per ulteriori informazioni, consulta una delle seguenti opzioni:
+ [Addestramento della CPU](#Instance-XGBoost-training-cpu)
+ [Addestramento della GPU](#Instance-XGBoost-training-gpu)
+ [Addestramento distribuito della CPU](#Instance-XGBoost-distributed-training-cpu)
+ [Addestramento distribuito della GPU](#Instance-XGBoost-distributed-training-gpu)
+ [Inferenza](#Instance-XGBoost-inference)

### Addestramento
<a name="Instance-XGBoost-training"></a>

L'algoritmo SageMaker AI XGBoost supporta l'addestramento di CPU e GPU.

#### Addestramento della CPU
<a name="Instance-XGBoost-training-cpu"></a>

SageMaker AI XGBoost 1.0-1 o versioni precedenti si allena solo utilizzando CPU. Poiché si tratta di un algoritmo basato su memoria e non su calcolo, un'istanza di calcolo a scopo generico (ad esempio, M5) rappresenta una scelta migliore rispetto a un'istanza ottimizzata per il calcolo (ad esempio, C4). Inoltre, consigliamo di disporre di memoria sufficiente nelle istanze selezionate per conservare i dati di addestramento. Supporta l’utilizzo dello spazio su disco per gestire dati che non rientrano nella memoria principale. Questo è il risultato della funzionalità out-of-core disponibile con la modalità di input libsvm. Tuttavia, la scrittura di file di cache su disco rallenta il tempo di elaborazione dell’algoritmo. 

#### Addestramento della GPU
<a name="Instance-XGBoost-training-gpu"></a>

SageMaker AI XGBoost versione 1.2-2 o successiva supporta l'addestramento tramite GPU. Nonostante costi più elevati per istanza, i GPU si preparano più rapidamente, rendendoli più convenienti. 

SageMaker AI XGBoost versione 1.2-2 o successiva supporta le famiglie di istanze GPU P2, P3, G4dn e G5.

SageMaker AI XGBoost versione 1.7-1 o successiva supporta le famiglie di istanze GPU P3, G4dn e G5. Si noti che, a causa dei requisiti di capacità di elaborazione, la versione 1.7-1 o successiva non supporta la famiglia di istanze P2.

SageMaker AI XGBoost versione 3.0-5 o successiva supporta le famiglie di istanze GPU G4dn e G5. Tieni presente che, a causa dei requisiti di capacità di elaborazione, la versione 3.0-5 o successiva non supporta la famiglia di istanze P3.

Per sfruttare i vantaggi dell’addestramento GPU:
+ Specificate il tipo di istanza come una delle istanze GPU (ad esempio, G4dn) 
+ Impostare l’iperparametro `tree_method` su `gpu_hist` nello script XGBoost esistente

### Addestramento distribuito
<a name="Instance-XGBoost-distributed-training"></a>

SageMaker AI XGBoost supporta istanze CPU e GPU per l'addestramento distribuito.

#### Addestramento distribuito della CPU
<a name="Instance-XGBoost-distributed-training-cpu"></a>

Per eseguire l’addestramento della CPU su più istanze, imposta il parametro `instance_count` dello strumento di valutazione su un valore maggiore di uno. I dati di input devono essere suddivisi tra il numero totale di istanze. 

##### Suddividi i dati di input tra le istanze
<a name="Instance-XGBoost-distributed-training-divide-data"></a>

Suddividi i dati di input utilizzando le fasi seguenti:

1. Suddividi i dati di input in file più piccoli. Il numero di file deve essere almeno uguale al numero di istanze utilizzate per l’addestramento distribuito. L'utilizzo di più file più piccoli anziché un unico file di grandi dimensioni riduce inoltre il tempo di download dei dati per il processo di addestramento.

1. Quando crei il tuo [TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html), imposta il parametro di distribuzione su. `ShardedByS3Key` In questo modo, ogni istanza riceve approssimativamente *1/n*il numero di file in S3 se ci sono *n* istanze specificate nel processo di formazione.

#### Addestramento distribuito della GPU
<a name="Instance-XGBoost-distributed-training-gpu"></a>

Puoi utilizzare l’addestramento distribuito con istanze a GPU singola o multipla.

**Addestramento distribuito con istanze a GPU singola**

SageMaker Le versioni di AI XGBoost da 1.2-2 a 1.3-1 supportano solo l'addestramento su istanze a GPU singola. Ciò significa che anche se si seleziona un'istanza a GPU multipla, viene utilizzata solo una GPU per istanza.

I dati di input devono essere suddivisi tra il numero totale di istanze se: 
+ Utilizzi le versioni di XGBoost da 1.2-2 a 1.3-1.
+ Non devi utilizzare istanze multi-GPU.

 Per ulteriori informazioni, consulta [Suddividi i dati di input tra le istanze](#Instance-XGBoost-distributed-training-divide-data).

**Nota**  
Le versioni da 1.2-2 a 1.3-1 di SageMaker AI XGBoost utilizzano solo una GPU per istanza, anche se si sceglie un'istanza multi-GPU.

**Addestramento distribuito con istanze a GPU multiple**

[A partire dalla versione 1.5-1, AI XGBoost offre formazione distribuita sulla GPU con Dask. SageMaker ](https://www.dask.org/) Con Dask puoi utilizzare tutte le GPU quando usi una o più istanze a GPU multiple. Dask funziona anche quando si utilizzano istanze a GPU singola. 

Addestra con Dask utilizzando le fasi seguenti:

1. Ometti il `distribution` parametro nel tuo o impostalo su. [TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html)`FullyReplicated`

1. Quando definisci gli iperparametri, imposta `use_dask_gpu_training` su `"true"`.

**Importante**  
L’addestramento distribuito con Dask supporta solo i formati di input CSV e Parquet. Se si utilizzano altri formati di dati come LIBSVM o PROTOBUF, il processo di addestramento non fallisce.   
Per i dati di Parquet, assicurati che i nomi delle colonne siano salvati come stringhe. Le colonne con nomi di altri tipi di dati non verranno caricate.

**Importante**  
L’addestramento distrubuito con Dask non supporta la modalità pipe. Se viene specificata la modalità pipe, il processo di addestramento fallisce.

Ci sono alcune considerazioni da tenere a mente quando si allena SageMaker AI XGBoost con Dask. Assicurati di suddividere i dati in file più piccoli. Dask legge ogni file Parquet come una partizione. Esiste un worker Dask per ogni GPU, quindi il numero di file deve essere maggiore del numero totale di GPU (numero di istanze \* numero di GPU per istanza). Avere un numero molto elevato di file può anche ridurre le prestazioni. Per ulteriori informazioni, consulta [Best practice Dask](https://docs.dask.org/en/stable/best-practices.html).

#### Variazioni nell'output
<a name="Instance-XGBoost-distributed-training-output"></a>

L'iperparametro `tree_method` specificato determina l'algoritmo utilizzato per l’addestramento di XGBoost. I metodi ad albero `approx`, `hist` e `gpu_hist` sono tutti metodi approssimativi e utilizzano lo schizzo per il calcolo dei quantili. Per ulteriori informazioni, consulta [Metodi ad albero](https://xgboost.readthedocs.io/en/stable/treemethod.html) nella documentazione di XGBoost. Lo schizzo è un algoritmo approssimativo. Pertanto, è possibile prevedere variazioni nel modello a seconda di fattori come il numero di worker scelti per l’addestramento distribuito. L'importanza della variazione dipende dai dati.

### Inferenza
<a name="Instance-XGBoost-inference"></a>

SageMaker AI XGBoost supporta istanze di CPU e GPU per l'inferenza. Per informazioni sui tipi di istanza per l'inferenza, consulta [Amazon SageMaker AI ML Instance Types](https://aws.amazon.com/sagemaker/pricing/).