I componenti della pipeline di Kubeflow sono funzioni factory che creano i passaggi della pipeline. Ogni componente descrive gli input, gli output e l'implementazione del componente. Ad esempio, train_op
è un componente nel seguente esempio di codice.
Ad esempio, un componente di addestramento potrebbe prendere un file CSV come input e usarlo per addestrare un modello. Impostando i parametri del tipo di macchina nel passaggio della pipeline, puoi gestire i requisiti di ogni passaggio della pipeline. Se hai due passaggi di addestramento e un passaggio viene addestrato su un file di dati di grandi dimensioni e il secondo su un file di dati di piccole dimensioni, puoi allocare più memoria e CPU alla prima attività e meno risorse alla seconda.
Per impostazione predefinita, il componente verrà eseguito come Vertex AI
CustomJob
utilizzando una macchina e2-standard-4, con CPU a 4 core e 16 GB di memoria. Per ulteriori informazioni sulla selezione di una delle risorse di macchine specifiche di Google Cloud elencate in Tipi di macchine, consulta Richiedere risorse di macchine Google Cloud con Vertex AI Pipelines.
L'esempio seguente mostra come impostare le impostazioni di configurazione della CPU, della memoria e della GPU per un passaggio:
from kfp import dsl
@dsl.pipeline(name='custom-container-pipeline')
def pipeline():
generate = generate_op()
train = (
train_op(
training_data=generate.outputs['training_data'],
test_data=generate.outputs['test_data'],
config_file=generate.outputs['config_file'])
.set_cpu_limit('CPU_LIMIT')
.set_memory_limit('MEMORY_LIMIT')
.add_node_selector_constraint(SELECTOR_CONSTRAINT)
.set_accelerator_limit(ACCELERATOR_LIMIT))
Sostituisci quanto segue:
CPU_LIMIT: il limite massimo della CPU per questo operatore. Questo valore di stringa può essere un numero (valore intero per il numero di CPU) o un numero seguito da "m", che significa 1/1000. Puoi specificare al massimo 96 CPU.
MEMORY_LIMIT: il limite di memoria massimo per questo operatore. Questo valore della stringa può essere un numero o un numero seguito da "K" (kilobyte), "M" (megabyte) o "G" (gigabyte). Sono supportati al massimo 624 GB.
SELECTOR_CONSTRAINT: ogni vincolo è un'etichetta di coppia chiave-valore. Affinché il contenitore sia idoneo per l'esecuzione su un nodo, il nodo deve avere ogni vincolo come etichetta. Ad esempio:
'cloud.google.com/gke-accelerator', 'NVIDIA_TESLA_T4'
Sono disponibili i seguenti vincoli:
NVIDIA_H100_80GB
NVIDIA_A100_80GB
NVIDIA_TESLA_A100
(NVIDIA A100 40GB)NVIDIA_TESLA_P4
NVIDIA_TESLA_P100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
NVIDIA_L4
TPU_V2
TPU_V3
ACCELERATOR_LIMIT: il limite di acceleratori (GPU o TPU) per l'operatore. Puoi specificare un numero intero positivo. Per ulteriori informazioni sulle GPU disponibili e su come configurarle, consulta GPU. Per ulteriori informazioni sulle TPU disponibili e su come configurarle, consulta la sezione TPU.
CustomJob
supporta tipi di macchine specifici che ti limitano a un massimo di 96 CPU e 624 GB di memoria. In base alla configurazione della CPU, della memoria e dell'acceleratore specificata, Vertex AI Pipelines seleziona automaticamente la corrispondenza più simile tra i tipi di macchine supportati.