Accelerate documentation
Entrenamiento en CPU de Intel
Entrenamiento en CPU de Intel
Cómo funciona Para la optimización del entrenamiento en CPU
Accelerate tiene soporte completo para CPU de Intel, solo tienes que habilitarlo a través de la configuración.
Escenario 1: Aceleración de entrenamiento en CPU sin distribución
Ejecuta accelerate config en tu máquina:
$ accelerate config
-----------------------------------------------------------------------------------------------------------------------------------------------------------
In which compute environment are you running?
This machine
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
No distributed training
Do you want to run your training on CPU only (even if a GPU / Apple Silicon device is available)? [yes/NO]:yes
Do you wish to optimize your script with torch dynamo?[yes/NO]:NO
Do you want to use DeepSpeed? [yes/NO]: NO
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Do you wish to use FP16 or BF16 (mixed precision)?
bf16Esto generará un archivo de configuración que se usará automáticamente para establecer correctamente las opciones predeterminadas al
accelerate launch my_script.py --args_to_my_script
Por ejemplo, así es como se ejecutaría el ejemplo de NLP examples/nlp_example.py (desde la raíz del repositorio) con default_config.yaml, que se genera con accelerate config
compute_environment: LOCAL_MACHINE
distributed_type: 'NO'
downcast_bf16: 'no'
machine_rank: 0
main_training_function: main
mixed_precision: bf16
num_machines: 1
num_processes: 1
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: trueaccelerate launch examples/nlp_example.py
accelerator.prepareactualmente solo puede preparar simultáneamente varios modelos (y ningún optimizador) o un único par modelo-optimizador para el entrenamiento. Otros intentos (p. ej., dos pares modelo-optimizador) provocarán un error detallado. Para sortear esta limitación, considere usaraccelerator.preparepor separado para cada par modelo-optimizador.
Escenario 2: Aceleración del entrenamiento distribuido en CPU Utilizamos Intel oneCCL para la comunicación, combinado con la biblioteca Intel® MPI para ofrecer mensajería de clúster flexible, eficiente y escalable en la arquitectura Intel®. Puede consultar aquí la guía de instalación.
Ejecuta accelerate config en tu máquina (node0):
$ accelerate config
-----------------------------------------------------------------------------------------------------------------------------------------------------------
In which compute environment are you running?
This machine
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Which type of machine are you using?
multi-CPU
How many different machines will you use (use more than 1 for multi-node training)? [1]: 4
-----------------------------------------------------------------------------------------------------------------------------------------------------------
What is the rank of this machine?
0
What is the IP address of the machine that will host the main process? 36.112.23.24
What is the port you will use to communicate with the main process? 29500
Are all the machines on the same local network? Answer `no` if nodes are on the cloud and/or on different network hosts [YES/no]: yes
Do you want accelerate to launch mpirun? [yes/NO]: yes
Please enter the path to the hostfile to use with mpirun [~/hostfile]: ~/hostfile
Enter the number of oneCCL worker threads [1]: 1
Do you wish to optimize your script with torch dynamo?[yes/NO]:NO
How many processes should be used for distributed training? [1]:16
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Do you wish to use FP16 or BF16 (mixed precision)?
bf16Por ejemplo, así es como se ejecutaría el ejemplo de NLP examples/nlp_example.py (desde la raíz del repositorio) para el entrenamiento distribuido en CPU.
default_config.yaml, que se genera con accelerate config
compute_environment: LOCAL_MACHINE
distributed_type: MULTI_CPU
downcast_bf16: 'no'
machine_rank: 0
main_process_ip: 36.112.23.24
main_process_port: 29500
main_training_function: main
mixed_precision: bf16
mpirun_config:
mpirun_hostfile: /home/user/hostfile
num_machines: 4
num_processes: 16
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: trueEstablezca las siguientes variables de entorno y use el MPI de Intel para iniciar el entrenamiento
En node0, debe crear un archivo de configuración que contenga las direcciones IP de cada nodo (por ejemplo, hostfile) y pasar la ruta de ese archivo de configuración como argumento.
Si seleccionaste que Accelerate inicie mpirun, asegúrate de que la ubicación de tu hostfile coincida con la ruta en la configuración.
$ cat hostfile
xxx.xxx.xxx.xxx #node0 ip
xxx.xxx.xxx.xxx #node1 ip
xxx.xxx.xxx.xxx #node2 ip
xxx.xxx.xxx.xxx #node3 ipaccelerate launch examples/nlp_example.py
También puede iniciar directamente el entrenamiento distribuido con el comando mpirun; para ello, debe ejecutar el siguiente comando en node0 y 16DDP se habilitará en node0, node1, node2 y node3 con precisión mixta BF16. Al utilizar este método, el script de python, el entorno de python y el archivo de configuración de accelerate deben estar disponibles en todas las máquinas utilizadas para el entrenamiento multi-CPU.
export MASTER_ADDR=xxx.xxx.xxx.xxx #node0 ip
mpirun -f hostfile -n 16 -ppn 4 accelerate launch examples/nlp_example.py