

# Elastic Fabric Adapter para cargas de trabajo de HPC y IA o ML en Amazon EC2
<a name="efa"></a>

Elastic Fabric Adapter (EFA) es un dispositivo de red que puede adjuntar a su instancia de Amazon EC2 para acelerar las aplicaciones de inteligencia artificial (IA), machine learning (ML) y computación de alto rendimiento (HPC). Un EFA le permite obtener el rendimiento de la aplicación de un clúster de HPC o IA o ML en las instalaciones que cuente con la escalabilidad, flexibilidad y elasticidad que proporciona la nube de AWS.

EFA proporciona una latencia menor y más coherente y un rendimiento superior que el transporte TCP que se utiliza tradicionalmente en sistemas HPC basados en la nube. Mejora el rendimiento de una comunicación entre instancias que es fundamental para escalar aplicaciones HCP y de IA o ML. Está optimizado para trabajar en la infraestructura de red de AWS existente y se puede escalar en función de los requisitos de aplicaciones.

Un EFA se integra con Libfabric y es compatible con Nvidia Collective Communications Library (NCCL) para aplicaciones de IA y ML. También es compatible con Open MPI 4.1 y versiones posteriores y con la actualización 5 de 2019 de Intel MPI para aplicaciones HPC. NCCL y MPI se integran con Libfabric 1.7.0 y versiones posteriores. NIXL se integra con Libfabric 1.21.0 y versiones posteriores.

EFA admite RDMA (acceso directo a memoria remota) de escritura en la mayoría de los tipos de instancias compatibles que tienen Nitro versión 4 o posterior. La lectura RDMA es compatible con todas las instancias con Nitro versión 4 o posterior. Para obtener más información, consulte [Tipos de instancias admitidas](#efa-instance-types).

**Topics**
+ [Conceptos básicos de EFA](#efa-basics)
+ [Interfaces y bibliotecas admitidas](#efa-mpi)
+ [Tipos de instancias admitidas](#efa-instance-types)
+ [Sistemas operativos compatibles](#efa-os)
+ [Limitaciones de EFA](#efa-limits)
+ [Precios de EFA](#efa-pricing)
+ [Introducción a EFA y MPI](efa-start.md)
+ [Introducción a EFA y NCCL](efa-start-nccl.md)
+ [Introducción a EFA y NIXL](efa-start-nixl.md)
+ [Maximizar el ancho de banda de la red](efa-acc-inst-types.md)
+ [Creación y asociación de un EFA](create-efa.md)
+ [Desasociación y eliminación de un EFA](detach-efa.md)
+ [Monitorear un EFA](efa-working-monitor.md)
+ [Verificación del instalador de EFA](efa-verify.md)
+ [Notas de la versión](efa-changelog.md)

## Conceptos básicos de EFA
<a name="efa-basics"></a>

Un dispositivo de EFA se puede conectar a una instancia de EC2 de dos formas:

1. Mediante una interfaz de EFA tradicional, también denominada EFA con ENA, que crea un dispositivo de EFA y un dispositivo de ENA.

1. Mediante una interfaz exclusiva para EFA, que solo crea el dispositivo de EFA.

El dispositivo de EFA ofrece funciones como la derivación integrada del sistema operativo y el control de congestión a través del protocolo Scalable Reliable Datagram (SRD). Las características del dispositivo de EFA permiten una funcionalidad de transporte fiable y de baja latencia que permite a la interfaz de EFA brindar un mejor rendimiento de las aplicaciones de HPC y ML en Amazon EC2. Por otro lado, el dispositivo de ENA ofrece redes IP tradicionales.

![\[Contrastando una pila de software de HPC tradicional con una que utiliza un EFA.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/efa_stack.png)


Tradicionalmente, las aplicaciones de IA y ML utilizan NCCL y NIXL (para la inferencia desagregada). Las aplicaciones HPC utilizan Message Passing Interface (MPI) para interaccionar con el transporte de red del sistema. En la nube de AWS, esto significa que las aplicaciones interactúan con NCCL, NIXL o MPI que, a continuación, utiliza la pila TCP/IP del sistema operativo y el controlador del dispositivo de ENA para permitir la comunicación de red entre instancias.

Con una interfaz de EFA tradicional (EFA con ENA) o solo EFA, las aplicaciones de IA o ML utilizan NCCL y NIXL (para la inferencia desagregada). Las aplicaciones HPC utilizan MPI, para interaccionar de manera directa con la API de Libfabric. La API Libfabric omite el kernel del sistema operativo y se comunica directamente con el dispositivo EFA para poner paquetes en la red. Esto reduce la sobrecarga y permite que las aplicaciones de IA o ML y HPC se ejecuten de forma más eficiente.

**nota**  
Libfabric es un componente principal del marco OpenFabrics Interfaces (OFI), que define y exporta la API de espacio del usuario de OFI. Para obtener más información consulte el sitio web de [Libfabric OpenFabrics](https://ofiwg.github.io/libfabric/).

### Diferencias entre las interfaces de red ENA, EFA y solo EFA
<a name="efa-differences"></a>

Amazon EC2 ofrece dos tipos de interfaces de red:
+ Las interfaces **ENA** proporcionan todas las características de enrutamiento y redes IP tradicionales que se requieren para admitir las redes IP de una VPC. Para obtener más información, consulte [Habilitar redes mejoradas con ENA en las instancias de EC2](enhanced-networking-ena.md).
+ Las interfaces **EFA** (EFA con ENA) proporcionan tanto el dispositivo de ENA para redes IP como el dispositivo EFA para comunicaciones de baja latencia y alto rendimiento.
+ Las interfaces **solo de EFA** admiten solo las capacidades del dispositivo de EFA, sin el dispositivo de ENA para las redes IP tradicionales.

En la siguiente tabla, se proporciona una comparación de las interfaces de red de ENA, EFA y solo EFA.


|  | ENA | EFA (EFA con ENA) | Solo EFA | 
| --- | --- | --- | --- | 
| Compatible con la funcionalidad de redes IP | Sí | Sí | No | 
| Se pueden asignar direcciones IPv4 o IPv6 | Sí | Sí | No | 
| Se puede usar como interfaz de red principal para instancias | Sí | Sí | No | 
| Se tiene en cuenta para el límite de adhesión al ENI por instancia | Sí | Sí | Sí | 
| Tipos de instancias admitidos | Compatible con todos los tipos de instancias basadas en Nitro | [Tipos de instancias admitidas](#efa-instance-types) | [Tipos de instancias admitidas](#efa-instance-types) | 
| Nomenclatura de parámetros en las API de EC2 | interface | efa | efa-only | 
| Nomenclatura de campos en la consola EC2 | Sin selección | EFA con ENA | Solo EFA | 

## Interfaces y bibliotecas admitidas
<a name="efa-mpi"></a>

Los EFA admiten las siguientes interfaces y bibliotecas:
+ Open MPI 4.1 y versiones posteriores
+ Intel MPI 2019 Actualización 5 y versiones posteriores
+ NVIDIA Collective Communications Library (NCCL) 2.4.2 y posterior
+ NVIDIA Inference Xfer Library (NIXL) 1.0.0 y versiones posteriores
+ SDK AWS Neuron versión 2.3 y posteriores

## Tipos de instancias admitidas
<a name="efa-instance-types"></a>

Todos los tipos de instancia que se muestran a continuación admiten EFA. Además, las tablas indican el soporte de lectura y escritura RDMA para los tipos de instancia.

------
#### [ Nitro v6 ]


| Tipo de instancia | Compatibilidad con lectura RDMA | Compatibilidad con escritura RDMA | 
| --- |--- |--- |
| Uso general | 
| --- |
| m8a.48xlarge | Yes | Yes | 
| m8a.metal-48xl | Yes | Yes | 
| m8azn.24xlarge | Yes | Yes | 
| m8azn.metal-24xl | Yes | Yes | 
| m8gb.16xlarge | Yes | Yes | 
| m8gb.24xlarge | Yes | Yes | 
| m8gb.48xlarge | Yes | Yes | 
| m8gb.metal-24xl | Yes | Yes | 
| m8gb.metal-48xl | Yes | Yes | 
| m8gn.16xlarge | Yes | Yes | 
| m8gn.24xlarge | Yes | Yes | 
| m8gn.48xlarge | Yes | Yes | 
| m8gn.metal-24xl | Yes | Yes | 
| m8gn.metal-48xl | Yes | Yes | 
| m8i.48xlarge | Yes | Yes | 
| m8i.96xlarge | Yes | Yes | 
| m8i.metal-48xl | Yes | Yes | 
| m8i.metal-96xl | Yes | Yes | 
| m8id.48xlarge | Yes | Yes | 
| m8id.96xlarge | Yes | Yes | 
| m8id.metal-48xl | Yes | Yes | 
| m8id.metal-96xl | Yes | Yes | 
| Computación optimizada | 
| --- |
| c8a.48xlarge | Yes | Yes | 
| c8a.metal-48xl | Yes | Yes | 
| c8gb.16xlarge | Yes | Yes | 
| c8gb.24xlarge | Yes | Yes | 
| c8gb.48xlarge | Yes | Yes | 
| c8gb.metal-24xl | Yes | Yes | 
| c8gb.metal-48xl | Yes | Yes | 
| c8gn.16xlarge | Yes | Yes | 
| c8gn.24xlarge | Yes | Yes | 
| c8gn.48xlarge | Yes | Yes | 
| c8gn.metal-24xl | Yes | Yes | 
| c8gn.metal-48xl | Yes | Yes | 
| c8i.48xlarge | Yes | Yes | 
| c8i.96xlarge | Yes | Yes | 
| c8i.metal-48xl | Yes | Yes | 
| c8i.metal-96xl | Yes | Yes | 
| c8id.48xlarge | Yes | Yes | 
| c8id.96xlarge | Yes | Yes | 
| c8id.metal-48xl | Yes | Yes | 
| c8id.metal-96xl | Yes | Yes | 
| Optimizada para memoria | 
| --- |
| r8a.48xlarge | Yes | Yes | 
| r8a.metal-48xl | Yes | Yes | 
| r8gb.16xlarge | Yes | Yes | 
| r8gb.24xlarge | Yes | Yes | 
| r8gb.48xlarge | Yes | Yes | 
| r8gb.metal-24xl | Yes | Yes | 
| r8gb.metal-48xl | Yes | Yes | 
| r8gn.16xlarge | Yes | Yes | 
| r8gn.24xlarge | Yes | Yes | 
| r8gn.48xlarge | Yes | Yes | 
| r8gn.metal-24xl | Yes | Yes | 
| r8gn.metal-48xl | Yes | Yes | 
| r8i.48xlarge | Yes | Yes | 
| r8i.96xlarge | Yes | Yes | 
| r8i.metal-48xl | Yes | Yes | 
| r8i.metal-96xl | Yes | Yes | 
| r8id.48xlarge | Yes | Yes | 
| r8id.96xlarge | Yes | Yes | 
| r8id.metal-48xl | Yes | Yes | 
| r8id.metal-96xl | Yes | Yes | 
| x8aedz.24xlarge | Yes | Yes | 
| x8aedz.metal-24xl | Yes | Yes | 
| x8i.48xlarge | Yes | Yes | 
| x8i.64xlarge | Yes | Yes | 
| x8i.96xlarge | Yes | Yes | 
| x8i.metal-48xl | Yes | Yes | 
| x8i.metal-96xl | Yes | Yes | 
| Optimización de almacenamiento | 
| --- |
| i8ge.48xlarge | Yes | No | 
| i8ge.metal-48xl | Yes | No | 
| Computación acelerada | 
| --- |
| g7e.8xlarge | Yes | Yes | 
| g7e.12xlarge | Yes | Yes | 
| g7e.24xlarge | Yes | Yes | 
| g7e.48xlarge | Yes | Yes | 
| p6-b200.48xlarge | Yes | Yes | 
| p6-b300.48xlarge | Yes | Yes | 
| Informática de alto rendimiento | 
| --- |
| hpc8a.96xlarge | Yes | Yes | 

------
#### [ Nitro v5 ]


| Tipo de instancia | Compatibilidad con lectura RDMA | Compatibilidad con escritura RDMA | 
| --- |--- |--- |
| Uso general | 
| --- |
| m8g.24xlarge | Yes | No | 
| m8g.48xlarge | Yes | No | 
| m8g.metal-24xl | Yes | No | 
| m8g.metal-48xl | Yes | No | 
| m8gd.24xlarge | No | No | 
| m8gd.48xlarge | No | No | 
| m8gd.metal-24xl | No | No | 
| m8gd.metal-48xl | No | No | 
| Computación optimizada | 
| --- |
| c7gn.16xlarge | Yes | No | 
| c7gn.metal | Yes | No | 
| c8g.24xlarge | Yes | No | 
| c8g.48xlarge | Yes | No | 
| c8g.metal-24xl | Yes | No | 
| c8g.metal-48xl | Yes | No | 
| c8gd.24xlarge | No | No | 
| c8gd.48xlarge | No | No | 
| c8gd.metal-24xl | No | No | 
| c8gd.metal-48xl | No | No | 
| Optimizada para memoria | 
| --- |
| r8g.24xlarge | No | No | 
| r8g.48xlarge | No | No | 
| r8g.metal-24xl | No | No | 
| r8g.metal-48xl | No | No | 
| r8gd.24xlarge | No | No | 
| r8gd.48xlarge | No | No | 
| r8gd.metal-24xl | No | No | 
| r8gd.metal-48xl | No | No | 
| x8g.24xlarge | No | No | 
| x8g.48xlarge | No | No | 
| x8g.metal-24xl | No | No | 
| x8g.metal-48xl | No | No | 
| Optimización de almacenamiento | 
| --- |
| i7ie.48xlarge | Yes | No | 
| i7ie.metal-48xl | Yes | No | 
| i8g.48xlarge | No | No | 
| i8g.metal-48xl | No | No | 
| Computación acelerada | 
| --- |
| p5en.48xlarge | Yes | Yes | 
| p6e-gb200.36xlarge | Yes | Yes | 
| trn2.3xlarge | Yes | Yes | 
| trn2.48xlarge | Yes | Yes | 
| trn2u.48xlarge | Yes | Yes | 
| Informática de alto rendimiento | 
| --- |
| hpc7g.4xlarge | Yes | No | 
| hpc7g.8xlarge | Yes | No | 
| hpc7g.16xlarge | Yes | No | 

------
#### [ Nitro v4 ]


| Tipo de instancia | Compatibilidad con lectura RDMA | Compatibilidad con escritura RDMA | 
| --- |--- |--- |
| Uso general | 
| --- |
| m6a.48xlarge | Yes | Yes | 
| m6a.metal | Yes | Yes | 
| m6i.32xlarge | Yes | Yes | 
| m6i.metal | Yes | Yes | 
| m6id.32xlarge | Yes | Yes | 
| m6id.metal | Yes | Yes | 
| m6idn.32xlarge | Yes | Yes | 
| m6idn.metal | Yes | Yes | 
| m6in.32xlarge | Yes | Yes | 
| m6in.metal | Yes | Yes | 
| m7a.48xlarge | Yes | No | 
| m7a.metal-48xl | Yes | No | 
| m7g.16xlarge | Yes | No | 
| m7g.metal | Yes | No | 
| m7gd.16xlarge | Yes | No | 
| m7gd.metal | Yes | No | 
| m7i.48xlarge | Yes | No | 
| m7i.metal-48xl | Yes | No | 
| Computación optimizada | 
| --- |
| c6a.48xlarge | Yes | Yes | 
| c6a.metal | Yes | Yes | 
| c6gn.16xlarge | Yes | Yes | 
| c6i.32xlarge | Yes | Yes | 
| c6i.metal | Yes | Yes | 
| c6id.32xlarge | Yes | Yes | 
| c6id.metal | Yes | Yes | 
| c6in.32xlarge | Yes | Yes | 
| c6in.metal | Yes | Yes | 
| c7a.48xlarge | Yes | No | 
| c7a.metal-48xl | Yes | No | 
| c7g.16xlarge | Yes | Yes | 
| c7g.metal | Yes | Yes | 
| c7gd.16xlarge | Yes | No | 
| c7gd.metal | Yes | No | 
| c7i.48xlarge | Yes | No | 
| c7i.metal-48xl | Yes | No | 
| Optimizada para memoria | 
| --- |
| r6a.48xlarge | Yes | Yes | 
| r6a.metal | Yes | Yes | 
| r6i.32xlarge | Yes | Yes | 
| r6i.metal | Yes | Yes | 
| r6id.32xlarge | Yes | Yes | 
| r6id.metal | Yes | Yes | 
| r6idn.32xlarge | Yes | Yes | 
| r6idn.metal | Yes | Yes | 
| r6in.32xlarge | Yes | Yes | 
| r6in.metal | Yes | Yes | 
| r7a.48xlarge | No | No | 
| r7a.metal-48xl | No | No | 
| r7g.16xlarge | No | No | 
| r7g.metal | No | No | 
| r7gd.16xlarge | No | No | 
| r7gd.metal | No | No | 
| r7i.48xlarge | No | No | 
| r7i.metal-48xl | No | No | 
| r7iz.32xlarge | No | No | 
| r7iz.metal-32xl | No | No | 
| u7i-6tb.112xlarge | Yes | Yes | 
| u7i-8tb.112xlarge | Yes | Yes | 
| u7i-12tb.224xlarge | Yes | Yes | 
| u7in-16tb.224xlarge | Yes | Yes | 
| u7in-24tb.224xlarge | Yes | Yes | 
| u7in-32tb.224xlarge | Yes | Yes | 
| u7inh-32tb.480xlarge | Yes | Yes | 
| x2idn.32xlarge | Yes | Yes | 
| x2idn.metal | Yes | Yes | 
| x2iedn.32xlarge | Yes | Yes | 
| x2iedn.metal | Yes | Yes | 
| Optimización de almacenamiento | 
| --- |
| i4g.16xlarge | Yes | Yes | 
| i4i.32xlarge | Yes | Yes | 
| i4i.metal | Yes | Yes | 
| i7i.24xlarge | Yes | No | 
| i7i.48xlarge | Yes | No | 
| i7i.metal-48xl | Yes | No | 
| im4gn.16xlarge | Yes | Yes | 
| Computación acelerada | 
| --- |
| f2.48xlarge | Yes | Yes | 
| g6.8xlarge | Yes | Yes | 
| g6.12xlarge | Yes | Yes | 
| g6.16xlarge | Yes | Yes | 
| g6.24xlarge | Yes | Yes | 
| g6.48xlarge | Yes | Yes | 
| g6e.8xlarge | Yes | Yes | 
| g6e.12xlarge | Yes | Yes | 
| g6e.16xlarge | Yes | Yes | 
| g6e.24xlarge | Yes | Yes | 
| g6e.48xlarge | Yes | Yes | 
| gr6.8xlarge | Yes | Yes | 
| p5.4xlarge | Yes | Yes | 
| p5.48xlarge | Yes | Yes | 
| p5e.48xlarge | Yes | Yes | 
| trn1.32xlarge | Yes | Yes | 
| trn1n.32xlarge | Yes | Yes | 
| Informática de alto rendimiento | 
| --- |
| hpc6a.48xlarge | Yes | Yes | 
| hpc6id.32xlarge | Yes | Yes | 
| hpc7a.12xlarge | Yes | No | 
| hpc7a.24xlarge | Yes | No | 
| hpc7a.48xlarge | Yes | No | 
| hpc7a.96xlarge | Yes | No | 

------
#### [ Nitro v3 ]


| Tipo de instancia | Compatibilidad con lectura RDMA | Compatibilidad con escritura RDMA | 
| --- |--- |--- |
| Uso general | 
| --- |
| m5dn.24xlarge | No | No | 
| m5dn.metal | No | No | 
| m5n.24xlarge | No | No | 
| m5n.metal | No | No | 
| m5zn.12xlarge | No | No | 
| m5zn.metal | No | No | 
| Computación optimizada | 
| --- |
| c5n.9xlarge | No | No | 
| c5n.18xlarge | No | No | 
| c5n.metal | No | No | 
| Optimizada para memoria | 
| --- |
| r5dn.24xlarge | No | No | 
| r5dn.metal | No | No | 
| r5n.24xlarge | No | No | 
| r5n.metal | No | No | 
| x2iezn.12xlarge | No | No | 
| x2iezn.metal | No | No | 
| Optimización de almacenamiento | 
| --- |
| i3en.12xlarge | No | No | 
| i3en.24xlarge | No | No | 
| i3en.metal | No | No | 
| Computación acelerada | 
| --- |
| dl1.24xlarge | Yes | No | 
| dl2q.24xlarge | No | No | 
| g4dn.8xlarge | No | No | 
| g4dn.12xlarge | No | No | 
| g4dn.16xlarge | No | No | 
| g4dn.metal | No | No | 
| g5.8xlarge | No | No | 
| g5.12xlarge | No | No | 
| g5.16xlarge | No | No | 
| g5.24xlarge | No | No | 
| g5.48xlarge | No | No | 
| inf1.24xlarge | No | No | 
| p3dn.24xlarge | No | No | 
| p4d.24xlarge | Yes | No | 
| p4de.24xlarge | Yes | No | 
| vt1.24xlarge | No | No | 
| Generación anterior | 
| --- |
| p3dn.24xlarge | No | No | 

------

**Para ver los tipos de instancias disponibles que son compatibles con los EFA en una región específica**  
Los tipos de instancia disponibles varían según la región. Para ver los tipos de instancias disponibles que son compatibles con los EFA en una región, utilice el comando [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) con el parámetro `--region`. Incluya el parámetro `--filters` para limitar los resultados a los tipos de instancia que admiten EFA y el parámetro `--query` para limitar la salida al valor de `InstanceType`.

```
aws ec2 describe-instance-types \
    --region us-east-1  \
    --filters Name=network-info.efa-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]"  \
    --output text | sort
```

## Sistemas operativos compatibles
<a name="efa-os"></a>

La compatibilidad del sistema operativo varía según el tipo de procesador. En la tabla siguiente se muestran los sistemas operativos compatibles.


| Sistema operativo | Tipos de instancias Intel/AMD (`x86_64`) | Tipos de instancia de AWS Graviton (`arm64`) | 
| --- | --- | --- | 
| Amazon Linux 2023 | ✓ | ✓ | 
| Amazon Linux 2 | ✓ | ✓ | 
| RHEL 8 y 9 | ✓ | ✓ | 
| Debian 11, 12 y 13 | ✓ | ✓ | 
| Rocky Linux 8 y 9 | ✓ | ✓ | 
| Ubuntu 22.04 y 24.04 | ✓ | ✓ | 
| SUSE Linux Enterprise 15 SP2 y posteriores | ✓ | ✓ | 
| OpenSUSE Leap 15.5 y versiones posteriores | ✓ |  | 

**nota**  
Es posible que algunos de los sistemas operativos mencionados no sean compatibles con Intel MPI. Si utiliza Intel MPI, consulte la [documentación de Intel MPI](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html) para verificar la compatibilidad con su sistema operativo.

## Limitaciones de EFA
<a name="efa-limits"></a>

Los EFA presentan las siguientes limitaciones:
+ La escritura RDMA no es compatible con todos los tipos de instancias. Para obtener más información, consulte [Tipos de instancias admitidas](#efa-instance-types).
+ Actualmente, no se admite el tráfico de 1 EFA entre las instancias P4d/P4de/DL1 y otros tipos de instancias.
+ [Los tipos de instancias que admiten varias tarjetas de red](using-eni.md#network-cards) se pueden configurar con un EFA por tarjeta de red. Todos los demás tipos de instancia compatibles admiten solo un EFA por instancia.
+ Los hosts dedicados y las instancias dedicadas de `c7g.16xlarge`, `m7g.16xlarge` y `r7g.16xlarge` no son compatibles cuando se adjunta un EFA.
+ El tráfico de 1 EFA no puede cruzar zonas de disponibilidad ni VPC. Esto no se aplica al tráfico de IP normal desde el dispositivo de ENA de una interfaz EFA.
+ El tráfico de 1 EFA no es enrutable. El tráfico de IP normal desde el dispositivo de ENA de una interfaz de EFA sigue siendo enrutable.
+ EFA no es compatible con AWS Outposts.
+ El dispositivo de EFA de una interfaz de EFA (EFA con ENA) solo es compatible con las instancias de Windows para aplicaciones basadas en el kit de desarrollo de software de AWS Cloud Digital Interface (SDK de AWS CDI). Si conectas una interfaz de EFA (EFA con ENA) a una instancia de Windows para aplicaciones que no estén basadas en el SDK de CDI, funcionará como una interfaz de ENA, sin las capacidades adicionales del dispositivo de EFA. Las aplicaciones basadas en AWS CDI en Windows o Linux no son compatibles con la interfaz exclusiva para EFA. Para obtener más información, consulte la [Guía del usuario del kit de desarrollo de software de AWS Cloud Digital Interface (SDK de AWS CDI)](https://docs.aws.amazon.com/CDI-SDK/latest/ug/what-is.html).

1*tráfico de EFA* se refiere al tráfico transmitido a través del dispositivo de EFA de una interfaz de EFA (EFA con ENA) o solo de EFA.

## Precios de EFA
<a name="efa-pricing"></a>

EFA está disponible como una función de red opcional de Amazon EC2 que puede habilitar en cualquier instancia compatible sin costo adicional.

# Introducción a EFA y MPI para cargas de trabajo de HPC en Amazon EC2
<a name="efa-start"></a>

Este tutorial lo ayuda a iniciar un clúster de instancias habilitado para MPI y EFA para cargas de trabajo de HPC.

**nota**  
Las instancias `u7i-12tb.224xlarge`, `u7in-16tb.224xlarge`, `u7in-24tb.224xlarge` y `u7in-32tb.224xlarge` pueden ejecutar hasta 128 procesos MPI paralelos con Open MPI o hasta 256 procesos MPI paralelos con Intel MPI.

**Topics**
+ [Paso 1: preparar un grupo de seguridad habilitado para EFA](#efa-start-security)
+ [Paso 2: iniciar una instancia temporal](#efa-start-tempinstance)
+ [Paso 3: instalar el software EFA](#efa-start-enable)
+ [Paso 4: (*opcional*) habilitar Open MPI 5](#efa-start-ompi5)
+ [Paso 5: (*opcional*) instalar Intel MPI](#efa-start-impi)
+ [Paso 6: deshabilitar la protección ptrace](#efa-start-ptrace)
+ [Paso 7. Confirmar instalación](#efa-start-test)
+ [Paso 8: instalar la aplicación de HPC](#efa-start-hpc-app)
+ [Paso 9: crear una AMI habilitada para EFA](#efa-start-ami)
+ [Paso 10: iniciar instancias habilitadas para EFA en un grupo con ubicación en clúster](#efa-start-instances)
+ [Paso 11: finalizar la instancia temporal](#efa-start-terminate)
+ [Paso 12: habilitar SSH sin contraseña](#efa-start-passwordless)

## Paso 1: preparar un grupo de seguridad habilitado para EFA
<a name="efa-start-security"></a>

Un EFA requiere un grupo de seguridad que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. En el siguiente procedimiento, se crea un grupo de seguridad que permite todo el tráfico entrante y saliente de sí mismo, y que permite el tráfico SSH entrante desde cualquier dirección IPv4 para la conectividad SSH.

**importante**  
Este grupo de seguridad está pensado solo con fines de prueba. Para sus entornos de producción, le recomendamos que cree una regla SSH entrante que permita el tráfico únicamente desde la dirección IP desde la que se conecta, como la dirección IP de su equipo o un rango de direcciones IP en la red local.

Para ver otros escenarios, consulte [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md).

**Para crear un grupo de seguridad habilitado para EFA**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Grupos de seguridad** y, a continuación, elija **Crear grupo de seguridad**.

1. En la ventana **Crear grupo de seguridad**, haga lo siguiente:

   1. En **Nombre del grupo de seguridad**, ingrese un nombre descriptivo para el grupo de seguridad, como, por ejemplo, `EFA-enabled security group`.

   1. (Opcional) En **Descripción**, ingrese una breve descripción del grupo de seguridad.

   1. En **VPC**, seleccione la VPC en la que desea iniciar sus instancias habilitadas para EFA.

   1. Elija **Creación de grupo de seguridad**.

1. Seleccione el grupo de seguridad que creó y, en la pestaña **Detalles**, copie el **ID del grupo de seguridad**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de entrada** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de origen**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **SSH**.

   1. En **Tipo de origen**, elija **Cualquiera de IPv4**.

   1. Seleccione **Guardar reglas**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de salida** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de destino**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Guardar reglas**.

## Paso 2: iniciar una instancia temporal
<a name="efa-start-tempinstance"></a>

Lance una instancia temporal que puede utilizar para instalar y configurar los componentes de software de EFA. Puede utilizar esta instancia para crear una AMI habilitada para EFA desde la que puede iniciar sus instancias habilitadas para EFA. 

**Para iniciar una instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Application and OS Images** (Imágenes de aplicaciones y sistema operativo), seleccione una AMI para uno de los [sistemas operativos compatibles](efa.md#efa-os).

1. En la sección **Tipo de instancia**, seleccione el [tipo de instancia admitida](efa.md#efa-instance-types).

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (Opcional) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. En la sección **Almacenamiento**, configure los volúmenes según sea necesario.

1. En el panel **Resumen** que se encuentra a la derecha, elija **Iniciar instancia**.

**nota**  
Considere la posibilidad de solicitar el uso de IMDSv2 para la instancia temporal, así como la AMI que creará en el [paso 9](#efa-start-ami), a menos que ya haya [configurado IMDSv2 como predeterminado para la cuenta](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults). Para obtener más información acerca de la configuración de IMDSv2, consulte [Configurar las opciones de metadatos para instancias nuevas](configuring-IMDS-new-instances.md). 

## Paso 3: instalar el software EFA
<a name="efa-start-enable"></a>

Instale el kernel habilitado para EFA, los controladores de EFA, Libfabric y la pila Open MPI necesarios para admitir EFA en su instancia temporal.

Los pasos varían en función de si pretende utilizar EFA con Open MPI, con Intel MPI o con Open MPI e Intel MPI.

**nota**  
Es posible que algunos sistemas operativos no sean compatibles con Intel MPI. Si utiliza Intel MPI, consulte la [documentación de Intel MPI](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html) para verificar la compatibilidad con su sistema operativo.

**Para instalar el software EFA**

1. Conéctese a la instancia que lanzó. Para obtener más información, consulte [Conexión a la instancia de Linux con SSH](connect-to-linux-instance.md).

1. Para asegurarse de que todos los paquetes de software están actualizados, realice una actualización rápida del software en la instancia. Este proceso puede demorar unos minutos.
   + Amazon Linux 2023, Amazon Linux 2, RHEL 8/9, Rocky Linux 8/9

     ```
     $ sudo yum update -y
     ```
   + Ubuntu y Debian

     ```
     $ sudo apt-get update && sudo apt-get upgrade -y
     ```
   + SUSE Linux Enterprise

     ```
     $ sudo zypper update -y
     ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. Descargue los archivos de instalación de software de EFA. Los archivos de instalación de software están empaquetados en un archivo tarball comprimido (`.tar.gz`). Para descargar la última versión *estable*, utilice el comando siguiente.

   También puede obtener la última versión reemplazando el número de versión por `latest` en el comando anterior.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. (*Opcional*) Verifique la autenticidad y la integridad del archivo tarball (`.tar.gz`) de EFA.

   Le recomendamos que lo haga para verificar la identidad del editor de software y para verificar que el archivo no se haya modificado ni dañado desde que se publicó. Si no desea verificar el archivo tarball, omita este paso.
**nota**  
De forma alternativa, si prefiere verificar el archivo tarball con una suma de comprobación MD5 o SHA256, consulte [Verificar el instalador de EFA mediante una suma de comprobación](efa-verify.md).

   1. Descargue la clave pública de GPG e impórtela a su conjunto de claves.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      El comando debe devolver un valor de clave. Anote el valor de clave, ya que lo necesitará en el siguiente paso.

   1. Verifique la huella digital de la clave de GPG. Ejecute el siguiente comando y especifique el valor de clave del paso anterior.

      ```
      $ gpg --fingerprint key_value
      ```

      El comando debe devolver una huella digital idéntica a `4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC`. Si la huella digital no coincide, no ejecute el script de instalación de EFA y contáctese con Soporte.

   1. Descargue el archivo de firma y verifique la firma del archivo tarball de EFA.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.47.0.tar.gz.sig
      ```

      A continuación se muestra un ejemplo de salida.

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      Si el resultado incluye `Good signature` y la huella digital coincide con la huella digital del paso anterior, avance al siguiente paso. Si no es así, no ejecute el script de instalación de EFA y contáctese con Soporte.

1. Extraiga los archivos desde el archivo `.tar.gz` comprimido y acceda al directorio extraído.

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. Instale el software EFA. Realice una de las siguientes acciones en función de su caso de uso.
**nota**  
**EFA no admite NVIDIA GPUDirect con SUSE Linux**. Si usa SUSE Linux, debe especificar adicionalmente la opción `--skip-kmod` para evitar la instalación de kmod. De forma predeterminada, SUSE Linux no permite módulos de kernel fuera del árbol.

------
#### [ Open MPI and Intel MPI ]

   Si tiene la intención de usar EFA con Open MPI e Intel MPI, debe instalar el software de EFA con Libfabric y Open MPI, y **debe completar el paso 5: Instalar Intel MPI**.

   Para instalar el software EFA con Libfabric y Open MPI, ejecute el siguiente comando.

**nota**  
A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. Si lo desea, puede especificar la versión de Open MPI que desea instalar. Para instalar únicamente Open MPI 4.1, incluya `--mpi=openmpi4`. Para instalar únicamente Open MPI 5, incluya `--mpi=openmpi5`. Para instalar ambos, omita la opción `--mpi`.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric se instala en `/opt/amazon/efa`. Open MPI 4.1 se instala en `/opt/amazon/openmpi`. Open MPI 5 se instala en `/opt/amazon/openmpi5`.

------
#### [ Open MPI only ]

   Si tiene la intención de usar EFA solo con Open MPI, debe instalar el software de EFA con Libfabric y Open MPI, y debe **omitir el paso 5: Instalar Intel MPI**. Para instalar el software EFA con Libfabric y Open MPI, ejecute el siguiente comando.

**nota**  
A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. Si lo desea, puede especificar la versión de Open MPI que desea instalar. Para instalar únicamente Open MPI 4.1, incluya `--mpi=openmpi4`. Para instalar únicamente Open MPI 5, incluya `--mpi=openmpi5`. Para instalar ambos, omita la opción `--mpi`.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric se instala en `/opt/amazon/efa`. Open MPI 4.1 se instala en `/opt/amazon/openmpi`. Open MPI 5 se instala en `/opt/amazon/openmpi5`.

------
#### [ Intel MPI only ]

   Si tiene la intención de utilizar solo EFA con Intel MPI, puede instalar el software EFA sin Libfabric y Open MPI. En este caso, Intel MPI utiliza su Libfabric integrado. Si decide hacerlo, **debe completar el paso 5: Instalar Intel MPI**. 

   Para instalar el software EFA sin Libfabric y Open MPI, ejecute el siguiente comando.

   ```
   $ sudo ./efa_installer.sh -y --minimal
   ```

------

1. Si el instalador de EFA le pide que reinicie la instancia, hágalo y vuelva a conectarse a la instancia. De lo contrario, cierre la sesión de la instancia y vuelva a iniciar sesión para completar la instalación.

1. Elimine el archivo tarball sin comprimir y el propio tarball. De lo contrario, se incluirán en la AMI habilitada para EFA que cree, lo que aumentará su tamaño.

## Paso 4: (*opcional*) habilitar Open MPI 5
<a name="efa-start-ompi5"></a>

**nota**  
Realice este paso solo si pretende usar Open MPI 5.

A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. Como alternativa, puede elegir instalar solo Open MPI 4.1 o Open MPI 5.

Si optó por instalar Open MPI 5 en el **paso 3: Instalar el software de EFA** y tiene intención de usarlo, debe realizar los siguientes pasos para habilitarlo.

**Habilitar Open MPI 5**

1. Agregue Open MPI 5 a la variable de entorno PATH.

   ```
   $ module load openmpi5
   ```

1. Compruebe que Open MPI 5 esté habilitado para su uso.

   ```
   $ which mpicc
   ```

   El comando debería devolver el directorio de instalación de Open MPI 5: `/opt/amazon/openmpi5`.

1. (*Opcional*) Para asegurarse de que Open MPI 5 se agregue a la variable de entorno PATH cada vez que se inicie la instancia, haga lo siguiente:

------
#### [ bash shell ]

   Agregue `module load openmpi5` a `/home/username/.bashrc` y `/home/username/.bash_profile`.

------
#### [ csh and tcsh shells ]

   Agregue `module load openmpi5` a `/home/username/.cshrc`.

------

Si necesita eliminar Open MPI 5 de la variable de entorno PATH, ejecute el siguiente comando y elimine el comando de los scripts de inicio del intérprete de comandos.

```
$ module unload openmpi5
```

## Paso 5: (*opcional*) instalar Intel MPI
<a name="efa-start-impi"></a>

**importante**  
Ejecute este paso solo si pretende utilizar Intel MPI. Si tiene la intención de utilizar solo Open MPI, omita este paso. 

La instalación de Intel MPI requiere una instalación adicional y la configuración de una variable de entorno.

**Requisito previo**  
Asegúrese de que el usuario que lleva a cabo los pasos siguientes tenga permisos sudo.

**Para instalar Intel MPI**

1. Para descargar el script de instalación de Intel MPI, haga lo siguiente:

   1. Visite el [sitio web de Intel](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#mpi).

   1. En la sección **Biblioteca de Intel MPI** de la página web, elija el enlace para el instalador de la **Biblioteca de Intel MPI para Linux** **sin conexión**.

1. Ejecute el script de instalación que descargó en el paso anterior.

   ```
   $ sudo bash installation_script_name.sh
   ```

1. En el instalador, elija **Aceptar e instalar**.

1. Lea el programa de mejora de Intel, elija la opción correspondiente y, a continuación, **Comenzar la instalación**.

1. Cuando finalice la instalación, elija **Cerrar**.

1. De forma predeterminada, Intel MPI utiliza su Libfabric integrada (interna). En cambio, puede configurar Intel MPI para que use la Libfabric que se incluye con el instalador de EFA. Por lo general, el instalador de EFA incluye una versión de Libfabric posterior a la de Intel MPI. En algunos casos, la Libfabric que se incluye con el instalador de EFA es más eficaz que la de Intel MPI. Para configurar Intel MPI de modo que use la Libfabric que se incluye con el instalador de EFA, realice alguna de las siguientes acciones en función de su shell.

------
#### [ bash shells ]

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_OFI_LIBRARY_INTERNAL=0
   ```

------
#### [ csh and tcsh shells ]

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_OFI_LIBRARY_INTERNAL 0
   ```

------

1. Agregue el siguiente comando de **origen** al script de intérprete de comandos para obtener el script `vars.sh` desde el directorio de instalación para configurar el entorno del compilador cada vez que se inicie la instancia. Haga lo siguiente en función del shell.

------
#### [ bash shells ]

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.sh
   ```

------
#### [ csh and tcsh shells ]

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.csh
   ```

------

1. De forma predeterminada, si el EFA no está disponible debido a una configuración incorrecta, Intel MPI utilizará la pila de red TCP/IP, lo que puede provocar un rendimiento más lento de la aplicación. Puede evitar que esto suceda configurando `I_MPI_OFI_PROVIDER` en `efa`. Esto hace que Intel MPI falle con el siguiente error si el EFA no está disponible:

   ```
   Abort (XXXXXX) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Init: OtherMPI error,
   MPIR_Init_thread (XXX)........:	
   MPID_Init (XXXX)..............:
   MPIDI_OFI_mpi_init_hook (XXXX):
   open_fabric (XXXX)............:
   find_provider (XXXX)..........:
   OFI fi_getinfo() failed (ofi_init.c:2684:find_provider:
   ```

   Haga lo siguiente en función del shell.

------
#### [ bash shells ]

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_OFI_PROVIDER=efa
   ```

------
#### [ csh and tcsh shells ]

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_OFI_PROVIDER efa
   ```

------

1. De forma predeterminada, Intel MPI no imprime la información de depuración. Puede especificar diferentes niveles de detalle para controlar la información de depuración. Los valores posibles (ordenados en función de la cantidad de información que proporcionan) son los siguientes: `0` (predeterminado), `1`, `2`, `3`, `4`, `5`. El nivel `1` y los niveles superiores imprimen la `libfabric version` y el `libfabric provider`. Use la `libfabric version` para comprobar si Intel MPI utiliza la Libfabric interna o la Libfabric que se incluye con el instalador de EFA. Si utiliza la Libfabric interna, la versión llevará el sufijo `impi`. Use el `libfabric provider` para comprobar si Intel MPI utiliza el EFA o la red TCP/IP. Si utiliza el EFA, el valor será `efa`. Si utiliza la red TCP/IP, el valor será `tcp;ofi_rxm`.

   Para habilitar la información de depuración, realice alguna de las siguientes acciones en función del shell.

------
#### [ bash shells ]

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_DEBUG=value
   ```

------
#### [ csh and tcsh shells ]

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_DEBUG value
   ```

------

1. De forma predeterminada, Intel MPI utiliza la memoria compartida del sistema operativo (`shm`) para la comunicación dentro del nodo y, por otro lado, usa la Libfabric (`ofi`) solo para la comunicación entre nodos. Por lo general, esta configuración proporciona el mejor rendimiento. Sin embargo, en algunos casos, la estructura shm de Intel MPI puede provocar el bloqueo de ciertas aplicaciones de forma indefinida.

   Para resolver este problema, puede forzar que Intel MPI use Libfabric para la comunicación tanto dentro del nodo como entre nodos. Para ello, realice alguna de las siguientes acciones en función del shell.

------
#### [ bash shells ]

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_FABRICS=ofi
   ```

------
#### [ csh and tcsh shells ]

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_FABRICS ofi
   ```

------
**nota**  
El proveedor de la Libfabric del EFA utiliza la memoria compartida del sistema operativo para la comunicación dentro del nodo. Esto significa que la configuración de `I_MPI_FABRICS` en `ofi` produce un rendimiento similar a la configuración predeterminada de `shm:ofi`.

1. Cierre la sesión de la instancia y, a continuación, vuelva a iniciar sesión.

Si ya no desea utilizar Intel MPI, quite las variables de entorno de los scripts de inicio del shell.

## Paso 6: deshabilitar la protección ptrace
<a name="efa-start-ptrace"></a>

Para mejorar el rendimiento de la aplicación HPC, Libfabric utiliza la memoria local de la instancia para las comunicaciones entre procesos cuando los procesos se ejecutan en la misma instancia. 

La característica de memoria compartida utiliza Cross Memory Attach (CMA), que no es compatible con la *protección ptrace*. Si utiliza una distribución Linux que tiene la protección ptrace habilitada de forma predeterminada, como Ubuntu, debe deshabilitarla. Si su distribución Linux no tiene la protección ptrace habilitada de forma predeterminada, omita este paso.

**Para deshabilitar la protección ptrace**  
Aplique alguna de las siguientes acciones:
+ Para deshabilitar temporalmente la protección ptrace con fines de prueba, ejecute el siguiente comando.

  ```
  $ sudo sysctl -w kernel.yama.ptrace_scope=0
  ```
+ Para deshabilitar permanentemente la protección ptrace, agregue `kernel.yama.ptrace_scope = 0` `/etc/sysctl.d/10-ptrace.conf` y reinicie la instancia.

## Paso 7. Confirmar instalación
<a name="efa-start-test"></a>

**Para confirmar que la instalación se ha realizado correctamente**

1. Para confirmar que MPI se instaló correctamente, ejecute el comando siguiente:

   ```
   $ which mpicc
   ```
   + En el caso de Open MPI, la ruta devuelta debe incluir `/opt/amazon/`
   + En el caso de Intel MPI, la ruta devuelta debe incluir `/opt/intel/`. Si no obtiene el resultado esperado, asegúrese de haber obtenido el script `vars.sh` de Intel MPI.

1. Para confirmar que los componentes de software de EFA y Libfabric se instalaron correctamente, ejecute el siguiente comando.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   El comando debe devolver información acerca de las interfaces de EFA de Libfabric. En el siguiente ejemplo, se muestra el comando de salida.

   ```
   provider: efa
       fabric: EFA-fe80::94:3dff:fe89:1b70
       domain: efa_0-rdm
       version: 2.0
       type: FI_EP_RDM
       protocol: FI_PROTO_EFA
   ```

## Paso 8: instalar la aplicación de HPC
<a name="efa-start-hpc-app"></a>

Instale la aplicación de HPC en la instancia temporal. El procedimiento de instalación varía en función de la aplicación de HPC específica. Para obtener más información, consulte [Manage software on your AL2 instance](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) en la *Guía del usuario de Amazon Linux 2*.

**nota**  
Consulte la documentación de su aplicación de HPC para ver las instrucciones de instalación.

## Paso 9: crear una AMI habilitada para EFA
<a name="efa-start-ami"></a>

Después de haber instalado los componentes de software requeridos, crea una AMI que puede reutilizar para iniciar las instancias habilitadas para EFA.

**Para crear una AMI desde la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y elija **Acciones**, **Imagen**, **Crear imagen**.

1. En **Crear imagen**, realice lo siguiente:

   1. En **Nombre de imagen**, ingrese un nombre descriptivo para la AMI.

   1. (Opcional) En **Descripción de imagen**, ingrese una breve descripción del propósito la AMI.

   1. Elija **Crear imagen**.

1. En el panel de navegación, elija **AMI**.

1. Localice la AMI que creó en la lista. Espere a que el estado pase de `pending` a `available` antes de continuar con el paso siguiente.

## Paso 10: iniciar instancias habilitadas para EFA en un grupo con ubicación en clúster
<a name="efa-start-instances"></a>

Lance las instancias habilitadas para EFA en un grupo de ubicación en clúster utilizando la AMI habilitada para EFA que creó en el **Paso 7** y el grupo de seguridad habilitado para EFA que creó en el **Paso 1**.

**nota**  
No es un requisito absoluto lanzar las instancias habilitadas con un EFA a un grupo de colocación de clústeres. Sin embargo, le recomendamos ejecutar sus instancias habilitadas para EFA en un grupo con ubicación en clúster a medida que inicia las instancias en un grupo de baja latencia en una única zona de disponibilidad.
Para garantizar que la capacidad esté disponible a medida que escala las instancias del clúster, puede crear una reserva de capacidad para su grupo con ubicación en clúster. Para obtener más información, consulte [Utilización de reservas de capacidad con grupos con ubicación en clúster](cr-cpg.md).

**Cómo lanzar una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Imágenes de aplicaciones y sistema operativo**, elija **Mis AMI** y, a continuación, seleccione la AMI que creó en el paso anterior.

1. En la sección **Tipo de instancia**, seleccione el [tipo de instancia admitida](efa.md#efa-instance-types).

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (*Opcional*) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. (*Opcional*) En la sección **Almacenamiento**, configure los volúmenes según sea necesario.

1. En la sección **Detalles avanzados**, para **Nombre del grupo de ubicación**, seleccione el grupo con ubicación en clúster en el que se iniciarán las instancias. Si necesita crear un nuevo grupo con ubicación en clúster, elija **Crear nuevo grupo de ubicación**.

1. En el panel **Resumen**que se encuentra a la derecha, en **Cantidad de instancias**, ingrese la cantidad de instancias habilitadas para EFA que desea iniciar y, a continuación, elija **Iniciar instancias**.

## Paso 11: finalizar la instancia temporal
<a name="efa-start-terminate"></a>

En este punto, ya no necesita la instancia que inició en el [paso 2](#efa-start-tempinstance). Puede finalizar la instancia para dejar de incurrir en cargos debido a esta.

**Para finalizar la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y, a continuación, elija **Acciones**, **Estado de la instancia**, **Finalizar (eliminar) instancia**.

1. Cuando se le pida confirmación, elija **Finalizar (eliminar)**.

## Paso 12: habilitar SSH sin contraseña
<a name="efa-start-passwordless"></a>

Para permitir que las aplicaciones se ejecuten en todas las instancias del clúster, debe habilitar el acceso mediante SSH sin contraseña desde el nodo principal hasta los nodos miembro. El nodo principal es la instancia desde la que se ejecutan las aplicaciones. Las instancias restantes del clúster son los nodos miembros.

**Para habilitar SSH sin contraseña entre las instancias del clúster**

1. Seleccione una instancia del clúster como nodo principal y conéctese a ella.

1. Desactive `strictHostKeyChecking` y habilite `ForwardAgent` en el nodo principal. Abra `~/.ssh/config` con su editor de texto preferido y agregue lo siguiente.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Genere un par de claves de RSA.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   El par de claves se crea en el directorio `$HOME/.ssh/`.

1. Cambie los permisos de la clave privada en el nodo principal.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Abra `~/.ssh/id_rsa.pub` con su editor de texto preferido y copie la clave.

1. Para cada nodo miembro del clúster, realice lo siguiente:

   1. Conéctese a la instancia.

   1. Abra `~/.ssh/authorized_keys` con su editor de texto preferido y agregue la clave pública que copió anteriormente.

1. Para probar que SSH sin contraseña funciona como se esperaba, conecte al nodo principal y ejecute el siguiente comando.

   ```
   $ ssh member_node_private_ip
   ```

   Debe conectarse al nodo miembro sin que se le pida una clave o una contraseña.

# Introducción a EFA y NCCL para cargas de trabajo de ML en Amazon EC2
<a name="efa-start-nccl"></a>

La Biblioteca de comunicación colectiva de NVIDIA (NCCL) es una biblioteca de rutinas de comunicación colectiva estándar para múltiples GPU en un solo nodo o múltiples nodos. NCCL se puede usar junto con EFA, Libfabric y MPI para admitir varias cargas de trabajo de machine learning. Para obtener más información, consulte el sitio web de [NCCL](https://developer.nvidia.com/nccl).

**Requisitos**
+ Solo se admiten los tipos de instancia de la serie P de computación acelerada. Para obtener más información, consulte [ instancia de computación acelerada de Amazon EC2](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac-sizes).
+ Solo se admiten las AMI base Amazon Linux 2023 Amazon Linux 2, Ubuntu 24.04 y Ubuntu 22.04.
+ Con EFA solo se admite NCCL 2.4.2 y versiones posteriores.

Para obtener más información sobre cómo ejecutar cargas de trabajo de machine learning con EFA y NCCL mediante un AWS Deep Learning AMIs, consulte [Uso de EFA en la DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-efa-using.html) en la *Guía para desarrolladores AWS Deep Learning AMIs*.

**Topics**
+ [Paso 1: preparar un grupo de seguridad habilitado para EFA](#nccl-start-base-setup)
+ [Paso 2: iniciar una instancia temporal](#nccl-start-base-temp)
+ [Paso 3: instalar los controladores de GPU Nvidia, el kit de herramientas Nvidia CUDA y la cuDNN](#nccl-start-base-drivers)
+ [Paso 4: instalación de GDRCopy](#nccl-start-base-gdrcopy)
+ [Paso 5: instalación del software EFA](#nccl-start-base-enable)
+ [Paso 6: instalar NCCL](#nccl-start-base-nccl)
+ [Paso 7: Instalar las pruebas de NCCL](#nccl-start-base-tests)
+ [Paso 8: Probar la configuración de EFA y NCCL](#nccl-start-base-test)
+ [Paso 9: Instalar las aplicaciones de machine learning](#nccl-start-base-app)
+ [Paso 10: Crear una AMI habilitada para EFA y NCCL](#nccl-start-base-ami)
+ [Paso 11: Terminar la instancia temporal](#nccl-start-base-terminate)
+ [Paso 12: Lanzar instancias habilitadas para EFA en un grupo de colocación de clústeres](#nccl-start-base-cluster)
+ [Paso 13: Habilitar SSH sin contraseña](#nccl-start-base-passwordless)

## Paso 1: preparar un grupo de seguridad habilitado para EFA
<a name="nccl-start-base-setup"></a>

Un EFA requiere un grupo de seguridad que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. En el siguiente procedimiento, se crea un grupo de seguridad que permite todo el tráfico entrante y saliente de sí mismo, y que permite el tráfico SSH entrante desde cualquier dirección IPv4 para la conectividad SSH.

**importante**  
Este grupo de seguridad está pensado solo con fines de prueba. Para sus entornos de producción, le recomendamos que cree una regla SSH entrante que permita el tráfico únicamente desde la dirección IP desde la que se conecta, como la dirección IP de su equipo o un rango de direcciones IP en la red local.

Para ver otros escenarios, consulte [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md).

**Para crear un grupo de seguridad habilitado para EFA**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Grupos de seguridad** y, a continuación, elija **Crear grupo de seguridad**.

1. En la ventana **Crear grupo de seguridad**, haga lo siguiente:

   1. En **Nombre del grupo de seguridad**, ingrese un nombre descriptivo para el grupo de seguridad, como, por ejemplo, `EFA-enabled security group`.

   1. (Opcional) En **Descripción**, ingrese una breve descripción del grupo de seguridad.

   1. En **VPC**, seleccione la VPC en la que desea iniciar sus instancias habilitadas para EFA.

   1. Elija **Creación de grupo de seguridad**.

1. Seleccione el grupo de seguridad que creó y, en la pestaña **Detalles**, copie el **ID del grupo de seguridad**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de entrada** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de origen**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **SSH**.

   1. En **Tipo de origen**, elija **Cualquiera de IPv4**.

   1. Seleccione **Guardar reglas**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de salida** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de destino**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Guardar reglas**.

## Paso 2: iniciar una instancia temporal
<a name="nccl-start-base-temp"></a>

Lance una instancia temporal que puede utilizar para instalar y configurar los componentes de software de EFA. Puede utilizar esta instancia para crear una AMI habilitada para EFA desde la que puede iniciar sus instancias habilitadas para EFA.

**Para iniciar una instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Imágenes de aplicaciones y sistema operativo**, seleccione una AMI para uno de los sistemas operativos compatibles.

1. En la sección **Tipo de instancia**, seleccione un tipo de instancia compatible.

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (*Opcional*) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. En la sección **Storage** (Almacenamiento), configure los volúmenes según sea necesario.
**nota**  
Debe aprovisionar 10 a 20 GiB adicionales de almacenamiento para el conjunto de herramientas CUDA de Nvidia. Si no aprovisiona suficiente almacenamiento, recibirá un error de `insufficient disk space` cuando intente instalar los controladores de Nvidia y el kit de herramientas CUDA.

1. En el panel **Resumen** que se encuentra a la derecha, elija **Iniciar instancia**.

## Paso 3: instalar los controladores de GPU Nvidia, el kit de herramientas Nvidia CUDA y la cuDNN
<a name="nccl-start-base-drivers"></a>

------
#### [ Amazon Linux 2023 and Amazon Linux 2 ]

**Para instalar los controladores de GPU Nvidia, el kit de herramientas Nvidia CUDA y la cuDNN, haga lo siguiente:**

1. Para asegurarse de que todos los paquetes de software están actualizados, realice una actualización rápida del software en la instancia.

   ```
   $ sudo yum upgrade -y && sudo reboot
   ```

   Una vez que se haya reiniciado, vuelva a conectarse a la instancia.

1. Instale las utilidades necesarias para instalar los controladores de la GPU Nvidia y el kit de herramientas Nvidia CUDA.

   ```
   $ sudo yum groupinstall 'Development Tools' -y
   ```

1. Desactive los controladores de código abierto de `nouveau`.

   1. Instale las utilidades y el paquete de encabezados del kernel necesarios para la versión del kernel que está ejecutando actualmente.

      ```
      $ sudo yum install -y wget kernel-devel-$(uname -r) kernel-headers-$(uname -r)
      ```

   1. Agregue `nouveau` al archivo de lista de denegaciones `/etc/modprobe.d/blacklist.conf `.

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. Anexe `GRUB_CMDLINE_LINUX="rdblacklist=nouveau"` al archivo `grub` y vuelva a generar la configuración de Grub.

      ```
      $ echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' | sudo tee -a /etc/default/grub \
      && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. Preparar los repositorios necesarios

   1. Habilite el repositorio EPEL y configure la distribución en `rhel7`.

      ```
      $ sudo amazon-linux-extras install epel \
      && distribution='rhel7'
      ```

   1. Configure el repositorio de red CUDA y actualice la caché del repositorio.

      ```
      $ ARCH=$( /bin/arch ) \
      && sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/$distribution/${ARCH}/cuda-$distribution.repo \
      && sudo yum clean expire-cache
      ```

   1. (*Solo versión 5.10 del kernel*) Siga estos pasos solo si está utilizando Amazon Linux 2 con la versión 5.10 del kernel. Si utiliza Amazon Linux 2 con la versión 4.12 del kernel, omita estos pasos. Para comprobar la versión del kernel, ejecute **uname -r**.

      1. Cree el archivo de configuración del controlador de Nvidia denominado `/etc/dkms/nvidia.conf`.

         ```
         $ sudo mkdir -p /etc/dkms \
         && echo "MAKE[0]=\"'make' -j2 module SYSSRC=\${kernel_source_dir} IGNORE_XEN_PRESENCE=1 IGNORE_PREEMPT_RT_PRESENCE=1 IGNORE_CC_MISMATCH=1 CC=/usr/bin/gcc10-gcc\"" | sudo tee /etc/dkms/nvidia.conf
         ```

      1. (Solo para `p4d.24xlarge` y `p5.48xlarge`) Copie el archivo de configuración del controlador de Nvidia.

         ```
         $ sudo cp /etc/dkms/nvidia.conf /etc/dkms/nvidia-open.conf
         ```

1. Instale los controladores de GPU de Nvidia, el conjunto de herramientas NVIDIA CUDA y la cuDNN.

   ```
   $ sudo yum clean all \
   && sudo yum -y install nvidia-driver-latest-dkms \
   && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
   ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. (Solo para `p4d.24xlarge` y `p5.48xlarge`) Inicie el servicio de Nvidia Fabric Manager y asegúrese de que se inicie de forma automática cuando se inicia la instancia. Nvidia Fabric Manager es necesario para la administración de NV Switch.

   ```
   $ sudo systemctl enable nvidia-fabricmanager && sudo systemctl start nvidia-fabricmanager
   ```

1. Asegúrese de que las rutas CUDA se establecen cada vez que se inicia la instancia.
   + Para intérpretes de comandos *bash*, agregue las siguientes instrucciones a `/home/username/.bashrc` y `/home/username/.bash_profile`. 

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + Para intérpretes de comandos *tcsh*, agregue las siguientes instrucciones a `/home/username/.cshrc`.

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. Para confirmar que los controladores de la GPU Nvidia son funcionales, ejecute el siguiente comando.

   ```
   $ nvidia-smi -q | head
   ```

   El comando debe devolver información sobre las GPU de Nvidia, los controladores de GPU de Nvidia y el kit de herramientas Nvidia CUDA.

------
#### [ Ubuntu 24.04 and Ubuntu 22.04 ]

**Para instalar los controladores de GPU Nvidia, el kit de herramientas Nvidia CUDA y la cuDNN, haga lo siguiente:**

1. Para asegurarse de que todos los paquetes de software están actualizados, realice una actualización rápida del software en la instancia.

   ```
   $ sudo apt-get update && sudo apt-get upgrade -y
   ```

1. Instale las utilidades necesarias para instalar los controladores de la GPU Nvidia y el kit de herramientas Nvidia CUDA.

   ```
   $ sudo apt-get update && sudo apt-get install build-essential -y
   ```

1. Para usar el controlador de GPU Nvidia, primero debe deshabilitar los controladores de código abierto `nouveau`.

   1. Instale las utilidades y el paquete de encabezados del kernel necesarios para la versión del kernel que está ejecutando actualmente.

      ```
      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
      ```

   1. Agregue `nouveau` al archivo de lista de denegaciones `/etc/modprobe.d/blacklist.conf `.

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. Abra `/etc/default/grub` con su editor de texto preferido y agregue lo siguiente. 

      ```
      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
      ```

   1. Reconstruya la configuración de Grub.

      ```
      $ sudo update-grub
      ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. Agregue el repositorio de CUD e instale los controladores de GPU de Nvidia, el conjunto de herramientas NVIDIA CUDA y la cuDNN.
   + `p3dn.24xlarge`

     ```
     $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
     && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
     && sudo dpkg -i /tmp/deeplearning.deb \
     && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
     && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
     && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
     && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
     && sudo apt update \
     && sudo apt install nvidia-dkms-535 \
     && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
     ```
   + `p4d.24xlarge` y `p5.48xlarge`

     ```
     $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
     && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
     && sudo dpkg -i /tmp/deeplearning.deb \
     && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
     && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
     && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
     && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
     && sudo apt update \
     && sudo apt install nvidia-kernel-open-535 \
     && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
     ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. (Solo para `p4d.24xlarge` y `p5.48xlarge`) Instale Nvidia Fabric Manager.

   1. Debe instalar la versión de Nvidia Fabric Manager que coincida con la versión del módulo del kernel de Nvidia que instaló en el paso anterior.

      Ejecute el siguiente comando para determinar la versión del módulo del kernel de Nvidia.

      ```
      $ cat /proc/driver/nvidia/version | grep "Kernel Module"
      ```

      A continuación, se muestra un ejemplo del resultado.

      ```
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  450.42.01  Tue Jun 15 21:26:37 UTC 2021
      ```

      En el ejemplo anterior, la versión principal `450` del módulo del kernel. Esto significa que necesita instalar la versión de Nvidia Fabric Manager `450`.

   1. Instale Nvidia Fabric Manager. Ejecute el siguiente comando y especifique la versión principal identificada en el paso anterior.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number
      ```

      Por ejemplo, si se instaló la versión principal `450` del módulo de kernel, utilice el siguiente comando para instalar la versión correspondiente de Nvidia Fabric Manager.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
      ```

   1. Inicie el servicio y asegúrese de que se inicie de forma automática cuando se inicia la instancia. Nvidia Fabric Manager es necesario para la administración de NV Switch.

      ```
      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
      ```

1. Asegúrese de que las rutas CUDA se establecen cada vez que se inicia la instancia.
   + Para intérpretes de comandos *bash*, agregue las siguientes instrucciones a `/home/username/.bashrc` y `/home/username/.bash_profile`. 

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + Para intérpretes de comandos *tcsh*, agregue las siguientes instrucciones a `/home/username/.cshrc`.

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. Para confirmar que los controladores de la GPU Nvidia son funcionales, ejecute el siguiente comando.

   ```
   $ nvidia-smi -q | head
   ```

   El comando debe devolver información sobre las GPU de Nvidia, los controladores de GPU de Nvidia y el kit de herramientas Nvidia CUDA.

------

## Paso 4: instalación de GDRCopy
<a name="nccl-start-base-gdrcopy"></a>

Instale GDRCopy para mejorar el rendimiento de Libfabric. Para obtener más información sobre GDRCopy, consulte el [repositorio de GDRCopy](https://github.com/NVIDIA/gdrcopy).

------
#### [ Amazon Linux 2023 and Amazon Linux 2 ]

**Para instalar GDRCopy**

1. Instale las dependencias requeridas.

   ```
   $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
   ```

1. Descargue y extraiga el paquete de GDRCopy.

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz ; cd gdrcopy-2.4/packages
   ```

1. Compile el paquete RPM de GDRCopy.

   ```
   $ CUDA=/usr/local/cuda ./build-rpm-packages.sh
   ```

1. Instale el paquete RPM de GDRCopy.

   ```
   $ sudo rpm -Uvh gdrcopy-kmod-2.4-1dkms.noarch*.rpm \
   && sudo rpm -Uvh gdrcopy-2.4-1.x86_64*.rpm \
   && sudo rpm -Uvh gdrcopy-devel-2.4-1.noarch*.rpm
   ```

------
#### [ Ubuntu 24.04 and Ubuntu 22.04 ]

**Para instalar GDRCopy**

1. Instale las dependencias requeridas.

   ```
   $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
   ```

1. Descargue y extraiga el paquete de GDRCopy.

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz \
   && cd gdrcopy-2.4/packages
   ```

1. Compile el paquete RPM de GDRCopy.

   ```
   $ CUDA=/usr/local/cuda ./build-deb-packages.sh
   ```

1. Instale el paquete RPM de GDRCopy.

   ```
   $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \
   && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
   ```

------

## Paso 5: instalación del software EFA
<a name="nccl-start-base-enable"></a>

Instale el kernel habilitado para EFA, los controladores de EFA, Libfabric, el complemento aws-ofi-nccl y la pila Open MPI necesarios para admitir EFA en la instancia.

**Para instalar el software EFA**

1. Conéctese a la instancia que lanzó. Para obtener más información, consulte [Conexión a la instancia de Linux con SSH](connect-to-linux-instance.md).

1. Descargue los archivos de instalación de software de EFA. Los archivos de instalación de software están empaquetados en un archivo tarball comprimido (`.tar.gz`). Para descargar la última versión *estable*, utilice el comando siguiente.

   También puede obtener la última versión reemplazando el número de versión por `latest` en el comando anterior.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. (*Opcional*) Verifique la autenticidad y la integridad del archivo tarball (`.tar.gz`) de EFA.

   Le recomendamos que lo haga para verificar la identidad del editor de software y para verificar que el archivo no se haya modificado ni dañado desde que se publicó. Si no desea verificar el archivo tarball, omita este paso.
**nota**  
De forma alternativa, si prefiere verificar el archivo tarball con una suma de comprobación MD5 o SHA256, consulte [Verificar el instalador de EFA mediante una suma de comprobación](efa-verify.md).

   1. Descargue la clave pública de GPG e impórtela a su conjunto de claves.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      El comando debe devolver un valor de clave. Anote el valor de clave, ya que lo necesitará en el siguiente paso.

   1. Verifique la huella digital de la clave de GPG. Ejecute el siguiente comando y especifique el valor de clave del paso anterior.

      ```
      $ gpg --fingerprint key_value
      ```

      El comando debe devolver una huella digital idéntica a `4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC`. Si la huella digital no coincide, no ejecute el script de instalación de EFA y contáctese con Soporte.

   1. Descargue el archivo de firma y verifique la firma del archivo tarball de EFA.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.47.0.tar.gz.sig
      ```

      A continuación se muestra un ejemplo de salida.

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      Si el resultado incluye `Good signature` y la huella digital coincide con la huella digital del paso anterior, avance al siguiente paso. Si no es así, no ejecute el script de instalación de EFA y contáctese con Soporte.

1. Extraiga los archivos desde el archivo `.tar.gz` comprimido y acceda al directorio extraído.

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. Ejecute el script de instalación de software de EFA.
**nota**  
A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. A menos que necesite Open MPI 5, le recomendamos que instale únicamente Open MPI 4.1. El siguiente comando solo instala Open MPI 4.1. Si desea instalar Open MPI 4.1 y Open MPI 5, quite `--mpi=openmpi4`.

   ```
   $ sudo ./efa_installer.sh -y --mpi=openmpi4
   ```

   **Libfabric** está instalado en el directorio `/opt/amazon/efa`. El **complemento aws-ofi-nccl** está instalado en el directorio `/opt/amazon/ofi-nccl`. **Open MPI** está instalado en el directorio `/opt/amazon/openmpi`.

1. Si el instalador de EFA le pide que reinicie la instancia, hágalo y vuelva a conectarse a la instancia. De lo contrario, cierre la sesión de la instancia y vuelva a iniciar sesión para completar la instalación.

1. Confirme que los componentes de software de EFA se han instalado correctamente.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   El comando debe devolver información acerca de las interfaces de EFA de Libfabric. En el siguiente ejemplo, se muestra el comando de salida.
   + `p3dn.24xlarge` con interfaz de red única

     ```
     provider: efa
     fabric: EFA-fe80::94:3dff:fe89:1b70
     domain: efa_0-rdm
     version: 2.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```
   + `p4d.24xlarge` y `p5.48xlarge` con múltiples interfaces de red

     ```
     provider: efa
     fabric: EFA-fe80::c6e:8fff:fef6:e7ff
     domain: efa_0-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c34:3eff:feb2:3c35
     domain: efa_1-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c0f:7bff:fe68:a775
     domain: efa_2-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::ca7:b0ff:fea6:5e99
     domain: efa_3-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```

## Paso 6: instalar NCCL
<a name="nccl-start-base-nccl"></a>

Instale NCCL. Para obtener más información sobre NCCL, consulte el [repositorio de NCCL](https://github.com/NVIDIA/nccl).

**Para instalar NCCL**

1. Vaya al directorio `/opt`.

   ```
   $ cd /opt
   ```

1. Clone el repositorio oficial de NCCL en la instancia y vaya al repositorio clonado local.

   ```
   $ sudo git clone https://github.com/NVIDIA/nccl.git -b v2.23.4-1 && cd nccl
   ```

1. Cree e instale NCCL y especifique el directorio de instalación de CUDA.

   ```
   $ sudo make -j src.build CUDA_HOME=/usr/local/cuda
   ```

## Paso 7: Instalar las pruebas de NCCL
<a name="nccl-start-base-tests"></a>

Instale las pruebas de NCCL. Las pruebas de NCCL le permiten confirmar que NCCL está instalado correctamente y que está funcionando como se esperaba. Para obtener más información sobre las pruebas de NCCL, consulte el [repositorio nccl-tests](https://github.com/NVIDIA/nccl-tests).

**Para instalar las pruebas de NCCL**

1. Vaya al directorio de inicio.

   ```
   $ cd $HOME
   ```

1. Clone el repositorio oficial nccl-tests en la instancia y vaya al repositorio clonado local.

   ```
   $ git clone https://github.com/NVIDIA/nccl-tests.git && cd nccl-tests
   ```

1. Añada el directorio Libfabric a la variable `LD_LIBRARY_PATH`. 
   + Amazon Linux 2023 y Amazon Linux 2

     ```
     $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib64:$LD_LIBRARY_PATH
     ```
   + Ubuntu 24.04 y Ubuntu 22.04

     ```
     $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib:$LD_LIBRARY_PATH
     ```

1. Instale las pruebas NCCL y especifique los directorios de instalación MPI, NCCL y CUDA.

   ```
   $ make MPI=1 MPI_HOME=/opt/amazon/openmpi NCCL_HOME=/opt/nccl/build CUDA_HOME=/usr/local/cuda
   ```

## Paso 8: Probar la configuración de EFA y NCCL
<a name="nccl-start-base-test"></a>

Ejecute una prueba para asegurarse de que su instancia temporal esté configurada correctamente para EFA y NCCL. 

**Para probar la configuración de EFA y NCCL**

1. Cree un archivo de hosts que especifique los hosts en los que desea ejecutar las pruebas. El siguiente comando crea un archivo de hosts con el nombre `my-hosts` que incluye una referencia a la propia instancia.

------
#### [ IMDSv2 ]

   ```
   [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
   ```

------
#### [ IMDSv1 ]

   ```
   [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
   ```

------

1. Ejecute la prueba y especifique el archivo de hosts (`--hostfile`) y el número de GPUs que desea usar (`-n`). El siguiente comando ejecuta la prueba `all_reduce_perf` en 8 GPUs de la propia instancia y especifica las siguientes variables de entorno.
   + `FI_EFA_USE_DEVICE_RDMA=1`: (solo `p4d.24xlarge`) utiliza la funcionalidad de RDMA del dispositivo para la transferencia de un solo lado y de dos lados.
   + `NCCL_DEBUG=INFO`: habilita la salida de depuración detallada. También puede especificar `VERSION` para imprimir solo la versión de NCCL al inicio de la prueba o `WARN` para recibir solo mensajes de error.

   Para obtener más información sobre los argumentos de prueba de NCCL, consulte el archivo [README de pruebas de NCCL](https://github.com/NVIDIA/nccl-tests/blob/master/README.md) en el repositorio nccl-tests oficial.
   + `p3dn.24xlarge`

     ```
     $ /opt/amazon/openmpi/bin/mpirun \
     -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \
     -x NCCL_DEBUG=INFO \
     --hostfile my-hosts -n 8 -N 8 \
     --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \
     $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
     ```
   + `p4d.24xlarge` y `p5.48xlarge`

     ```
     $ /opt/amazon/openmpi/bin/mpirun \
     -x FI_EFA_USE_DEVICE_RDMA=1 \
     -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \
     -x NCCL_DEBUG=INFO \
     --hostfile my-hosts -n 8 -N 8 \
     --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \
     $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
     ```

1. Puede confirmar que EFA está activo como proveedor subyacente de NCCL cuando se imprime el registro `NCCL_DEBUG`.

   ```
   ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Selected Provider is efa*
   ```

   La siguiente información adicional se muestra cuando se utiliza una instancia `p4d.24xlarge`.

   ```
   ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Running on P4d platform, Setting NCCL_TOPO_FILE environment variable to /home/ec2-user/install/plugin/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml
   ```

## Paso 9: Instalar las aplicaciones de machine learning
<a name="nccl-start-base-app"></a>

Instale la aplicación de machine learning en la instancia temporal. El procedimiento de instalación varía en función de la aplicación de machine learning específica. Para obtener más información sobre la instalación de software en la instancia de Linux, consulte [Manage software on your Amazon Linux 2 instance](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html).

**nota**  
Consulte la documentación de su aplicación de machine learning para ver las instrucciones de instalación.

## Paso 10: Crear una AMI habilitada para EFA y NCCL
<a name="nccl-start-base-ami"></a>

Después de haber instalado los componentes de software requeridos, crea una AMI que puede reutilizar para lanzar las instancias habilitadas para EFA.

**Para crear una AMI desde la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y elija **Acciones**, **Imagen**, **Crear imagen**.

1. En **Crear imagen**, realice lo siguiente:

   1. En **Nombre de imagen**, ingrese un nombre descriptivo para la AMI.

   1. (Opcional) En **Descripción de imagen**, ingrese una breve descripción del propósito la AMI.

   1. Elija **Crear imagen**.

1. En el panel de navegación, elija **AMI**.

1. Localice la AMI que creó en la lista. Espere a que el estado pase de `pending` a `available` antes de continuar con el paso siguiente.

## Paso 11: Terminar la instancia temporal
<a name="nccl-start-base-terminate"></a>

En este punto, ya no necesita la instancia temporal que lanzó. Puede finalizar la instancia para dejar de incurrir en cargos debido a esta.

**Para finalizar la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y, a continuación, elija **Acciones**, **Estado de instancia**, **Finalizar instancia**.

1. Cuando se le indique que confirme, elija **Terminate (Rescindir)**.

## Paso 12: Lanzar instancias habilitadas para EFA en un grupo de colocación de clústeres
<a name="nccl-start-base-cluster"></a>

Lance las instancias habilitadas para EFA y NCCL en un grupo con ubicación en clúster utilizando la AMI habilitada para EFA y el grupo de seguridad habilitado para EFA que creó anteriormente.

**nota**  
No es un requisito absoluto lanzar las instancias habilitadas con un EFA a un grupo de colocación de clústeres. Sin embargo, le recomendamos ejecutar sus instancias habilitadas para EFA en un grupo con ubicación en clúster a medida que inicia las instancias en un grupo de baja latencia en una única zona de disponibilidad.
Para garantizar que la capacidad esté disponible a medida que escala las instancias del clúster, puede crear una reserva de capacidad para su grupo con ubicación en clúster. Para obtener más información, consulte [Utilización de reservas de capacidad con grupos con ubicación en clúster](cr-cpg.md).

------
#### [ New console ]

**Para iniciar una instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Imágenes de aplicaciones y sistema operativo**, elija **Mi AMI** y, a continuación, seleccione la AMI que creó en el paso anterior.

1. En la sección **Tipo de instancia**, seleccione `p3dn.24xlarge` o `p4d.24xlarge`.

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (Opcional) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. (*Opcional*) En la sección **Storage** (Almacenamiento), configure los volúmenes según sea necesario.

1. En la sección **Detalles avanzados**, para **Nombre del grupo de ubicación**, seleccione el grupo con ubicación en clúster en el que se iniciará la instancia. Si necesita crear un nuevo grupo con ubicación en clúster, elija **Create new placement group** (Crear nuevo grupo de ubicación).

1. En el panel **Summary** (Resumen) que se encuentra a la derecha, en **Number of instances** (Cantidad de instancias), ingrese la cantidad de instancias habilitadas para EFA que desea lanzar y, a continuación, elija **Launch instance** (Lanzar instancia).

------
#### [ Old console ]

**Para iniciar las instancias habilitadas para EFA y NCCL en un grupo con ubicación en clúster**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Elija **Iniciar instancia**.

1. En la página **Elegir una AMI**, elija **Mi AMI**, encuentre la AMI que creó anteriormente y, a continuación, elija **Seleccionar**.

1. En la página **Elegir un tipo de instancia**, seleccione **p3dn.24xlarge** y, a continuación, elija **Siguiente: Configurar detalles de instancia**.

1. En la página **Configurar detalles de instancia**, haga lo siguiente:

   1. En **Número de instancias**, ingrese el número de instancias habilitadas para EFA y NCCL que desea iniciar.

   1. En **Red** y **Subred**, seleccione la VPC y la subred en la que iniciar las instancias.

   1. En **Grupo de ubicación**, seleccione **Añadir instancia a grupo de ubicación**.

   1. En **Nombre de grupo de ubicación**, seleccione **Agregar a un nuevo grupo de ubicación** y, a continuación, ingrese un nombre descriptivo para el grupo de ubicación. Luego, en **Estrategia de grupo de ubicación**, seleccione **clúster**.

   1. En **EFA**, elija **Habilitar**.

   1. En la sección **Interfaces de red**, para el dispositivo **eth0**, elija **Nueva interfaz de red**. Como opción, puede especificar una dirección IPv4 principal y una o varias direcciones IPv4 secundarias. Si está iniciando la instancia en una subred que tiene un bloque de CIDR de IPv6 asociado, como opción puede especificar una dirección IPv6 principal y una o varias direcciones IPv6 secundarias.

   1. Elija **Siguiente: Añadir almacenamiento**.

1. En la página **Agregar almacenamiento**, especifique los volúmenes que desea adjuntar a las instancias además de los volúmenes especificados por la AMI (como el volumen de dispositivo raíz). A continuación, elija **Siguiente: Agregar etiquetas**.

1. En la página **Añadir etiquetas**, especifique etiquetas para las instancias, por ejemplo, un nombre fácil de recordar, y, a continuación, elija **Siguiente: Configurar grupo de seguridad**.

1. En la página **Configurar grupo de seguridad**, en **Asignar un grupo de seguridad**, seleccione **Seleccionar un grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó anteriormente.

1. Elija **Review and Launch (Revisar y lanzar)**.

1. En la página **Review Instance Launch (Revisar lanzamiento de instancia)**, revise la configuración y, a continuación, elija **Launch (Lanzar)** para elegir un par de claves y lanzar las instancias.

------

## Paso 13: Habilitar SSH sin contraseña
<a name="nccl-start-base-passwordless"></a>

Para permitir que las aplicaciones se ejecuten en todas las instancias del clúster, debe habilitar el acceso mediante SSH sin contraseña desde el nodo principal hasta los nodos miembro. El nodo principal es la instancia desde la que se ejecutan las aplicaciones. Las instancias restantes del clúster son los nodos miembros.

**Para habilitar SSH sin contraseña entre las instancias del clúster**

1. Seleccione una instancia del clúster como nodo principal y conéctese a ella.

1. Desactive `strictHostKeyChecking` y habilite `ForwardAgent` en el nodo principal. Abra `~/.ssh/config` con su editor de texto preferido y agregue lo siguiente.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Genere un par de claves de RSA.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   El par de claves se crea en el directorio `$HOME/.ssh/`.

1. Cambie los permisos de la clave privada en el nodo principal.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Abra `~/.ssh/id_rsa.pub` con su editor de texto preferido y copie la clave.

1. Para cada nodo miembro del clúster, realice lo siguiente:

   1. Conéctese a la instancia.

   1. Abra `~/.ssh/authorized_keys` con su editor de texto preferido y agregue la clave pública que copió anteriormente.

1. Para probar que SSH sin contraseña funciona como se esperaba, conecte al nodo principal y ejecute el siguiente comando.

   ```
   $ ssh member_node_private_ip
   ```

   Debe conectarse al nodo miembro sin que se le pida una clave o una contraseña.

# Introducción a EFA y NIXL para cargas de trabajo de inferencia en Amazon EC2
<a name="efa-start-nixl"></a>

La NVIDIA Inference Xfer Library (NIXL) es una biblioteca de comunicaciones de alto rendimiento y baja latencia diseñada de forma específica para cargas de trabajo de inferencia desagregadas. NIXL se puede utilizar junto con EFA y Libfabric para permitir la transferencia de caché KV entre los nodos de prellenado y decodificación, y permite un movimiento eficiente de la caché KV entre varias capas de almacenamiento. Para obtener más información, consulte el sitio web de [NIXL](https://github.com/ai-dynamo/nixl).

**Requisitos**
+ Solo se admiten AMI base de Ubuntu 24.04 y Ubuntu 22.04.
+ EFA solo es compatible con NIXL 1.0.0 y posterior.

**Topics**

## Paso 1: preparar un grupo de seguridad habilitado para EFA
<a name="nixl-start-base-setup"></a>

Un EFA requiere un grupo de seguridad que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. En el siguiente procedimiento, se crea un grupo de seguridad que permite todo el tráfico entrante y saliente de sí mismo, y que permite el tráfico SSH entrante desde cualquier dirección IPv4 para la conectividad SSH.

**importante**  
Este grupo de seguridad está pensado solo con fines de prueba. Para sus entornos de producción, le recomendamos que cree una regla SSH entrante que permita el tráfico únicamente desde la dirección IP desde la que se conecta, como la dirección IP de su equipo o un rango de direcciones IP en la red local.

Para ver otros escenarios, consulte [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md).

**Para crear un grupo de seguridad habilitado para EFA**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Grupos de seguridad** y, a continuación, elija **Crear grupo de seguridad**.

1. En la ventana **Crear grupo de seguridad**, haga lo siguiente:

   1. En **Nombre del grupo de seguridad**, ingrese un nombre descriptivo para el grupo de seguridad, como, por ejemplo, `EFA-enabled security group`.

   1. (Opcional) En **Descripción**, ingrese una breve descripción del grupo de seguridad.

   1. En **VPC**, seleccione la VPC en la que desea iniciar sus instancias habilitadas para EFA.

   1. Elija **Crear grupo de seguridad**.

1. Seleccione el grupo de seguridad que creó y, en la pestaña **Detalles**, copie el **ID del grupo de seguridad**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de entrada** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de origen**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **SSH**.

   1. En **Tipo de origen**, elija **Cualquiera de IPv4**.

   1. Seleccione **Guardar reglas**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de salida** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de destino**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Guardar reglas**.

## Paso 2: iniciar una instancia temporal
<a name="nixl-start-base-temp"></a>

Lance una instancia temporal que puede utilizar para instalar y configurar los componentes de software de EFA. Puede utilizar esta instancia para crear una AMI habilitada para EFA desde la que puede iniciar sus instancias habilitadas para EFA.

**Para iniciar una instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Imágenes de aplicaciones y sistema operativo**, seleccione una AMI para uno de los sistemas operativos compatibles. También puede seleccionar una DLAMI compatible de las que aparecen en la [página de notas de la versión de DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/appendix-ami-release-notes)

1. En la sección **Tipo de instancia**, seleccione un tipo de instancia compatible.

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (*Opcional*) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. En la sección **Storage** (Almacenamiento), configure los volúmenes según sea necesario.
**nota**  
Debe aprovisionar 10 a 20 GiB adicionales de almacenamiento para el conjunto de herramientas CUDA de Nvidia. Si no aprovisiona suficiente almacenamiento, recibirá un error de `insufficient disk space` cuando intente instalar los controladores de Nvidia y el kit de herramientas CUDA.

1. En el panel **Resumen** que se encuentra a la derecha, elija **Iniciar instancia**.

**importante**  
Omita el paso 3 si su AMI ya incluye los controladores de GPU de Nvidia, el kit de herramientas CUDA y cuDNN, o si utiliza una instancia que no es de GPU.

## Paso 3: instalar los controladores de GPU Nvidia, el kit de herramientas Nvidia CUDA y la cuDNN
<a name="nixl-start-base-drivers"></a>

**Para instalar los controladores de GPU Nvidia, el kit de herramientas Nvidia CUDA y la cuDNN, haga lo siguiente:**

1. Para asegurarse de que todos los paquetes de software están actualizados, realice una actualización rápida del software en la instancia.

   ```
   $ sudo apt-get update && sudo apt-get upgrade -y
   ```

1. Instale las utilidades necesarias para instalar los controladores de la GPU Nvidia y el kit de herramientas Nvidia CUDA.

   ```
   $ sudo apt-get install build-essential -y
   ```

1. Para usar el controlador de GPU Nvidia, primero debe deshabilitar los controladores de código abierto `nouveau`.

   1. Instale las utilidades y el paquete de encabezados del kernel necesarios para la versión del kernel que está ejecutando actualmente.

      ```
      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
      ```

   1. Agregue `nouveau` al archivo de lista de denegaciones `/etc/modprobe.d/blacklist.conf `.

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. Abra `/etc/default/grub` con su editor de texto preferido y agregue lo siguiente.

      ```
      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
      ```

   1. Reconstruya la configuración de Grub.

      ```
      $ sudo update-grub
      ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. Agregue el repositorio de CUD e instale los controladores de GPU de Nvidia, el conjunto de herramientas NVIDIA CUDA y la cuDNN.

   ```
   $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
   && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
   && sudo dpkg -i /tmp/deeplearning.deb \
   && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
   && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
   && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
   && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
   && sudo apt update \
   && sudo apt install nvidia-dkms-535 \
   && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
   ```

1. Reinicie la instancia y vuelva a conectarse a ella.

1. (Solo para `p4d.24xlarge` y `p5.48xlarge`) Instale Nvidia Fabric Manager.

   1. Debe instalar la versión de Nvidia Fabric Manager que coincida con la versión del módulo del kernel de Nvidia que instaló en el paso anterior.

      Ejecute el siguiente comando para determinar la versión del módulo del kernel de Nvidia.

      ```
      $ cat /proc/driver/nvidia/version | grep "Kernel Module"
      ```

      A continuación, se muestra un ejemplo del resultado.

      ```
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  450.42.01  Tue Jun 15 21:26:37 UTC 2021
      ```

      En el ejemplo anterior, la versión principal `450` del módulo del kernel. Esto significa que necesita instalar la versión de Nvidia Fabric Manager `450`.

   1. Instale Nvidia Fabric Manager. Ejecute el siguiente comando y especifique la versión principal identificada en el paso anterior.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number
      ```

      Por ejemplo, si se instaló la versión principal `450` del módulo de kernel, utilice el siguiente comando para instalar la versión correspondiente de Nvidia Fabric Manager.

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
      ```

   1. Inicie el servicio y asegúrese de que se inicie de forma automática cuando se inicia la instancia. Nvidia Fabric Manager es necesario para la administración de NV Switch.

      ```
      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
      ```

1. Asegúrese de que las rutas CUDA se establecen cada vez que se inicia la instancia.
   + Para intérpretes de comandos *bash*, agregue las siguientes instrucciones a `/home/username/.bashrc` y `/home/username/.bash_profile`.

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + Para intérpretes de comandos *tcsh*, agregue las siguientes instrucciones a `/home/username/.cshrc`.

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. Para confirmar que los controladores de la GPU Nvidia son funcionales, ejecute el siguiente comando.

   ```
   $ nvidia-smi -q | head
   ```

   El comando debe devolver información sobre las GPU de Nvidia, los controladores de GPU de Nvidia y el kit de herramientas Nvidia CUDA.

**importante**  
Omita el paso 4 si su AMI ya incluye GDRCopy o si utiliza una instancia que no es de GPU.

## Paso 4: instalación de GDRCopy
<a name="nixl-start-base-gdrcopy"></a>

Instale GDRCopy para mejorar el rendimiento de Libfabric en plataformas basadas en GPU. Para obtener más información sobre GDRCopy, consulte el [repositorio de GDRCopy](https://github.com/NVIDIA/gdrcopy).

**Para instalar GDRCopy**

1. Instale las dependencias requeridas.

   ```
   $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
   ```

1. Descargue y extraiga el paquete de GDRCopy.

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz \
   && cd gdrcopy-2.4/packages
   ```

1. Compile los paquetes DEB de GDRCopy.

   ```
   $ CUDA=/usr/local/cuda ./build-deb-packages.sh
   ```

1. Instale los paquetes DEB de GDRCopy.

   ```
   $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \
   && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
   ```

**importante**  
Omita el paso 5 si su AMI ya incluye el último instalador de EFA.

## Paso 5: instalación del software EFA
<a name="nixl-start-base-enable"></a>

Instale el kernel habilitado para EFA, los controladores de EFA, y la pila de Libfabric necesarios para admitir EFA en su instancia.

**Para instalar el software EFA**

1. Conéctese a la instancia que lanzó. Para obtener más información, consulte [Conexión a la instancia de Linux con SSH](connect-to-linux-instance.md).

1. Descargue los archivos de instalación de software de EFA. Los archivos de instalación de software están empaquetados en un archivo tarball comprimido (`.tar.gz`). Para descargar la última versión *estable*, utilice el comando siguiente.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. Extraiga los archivos desde el archivo `.tar.gz` comprimido, elimine el tarball y acceda al directorio extraído.

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && rm -rf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. Ejecute el script de instalación de software de EFA.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   **Libfabric** está instalado en el directorio `/opt/amazon/efa`.

1. Si el instalador de EFA le pide que reinicie la instancia, hágalo y vuelva a conectarse a la instancia. De lo contrario, cierre la sesión de la instancia y vuelva a iniciar sesión para completar la instalación.

1. Confirme que los componentes de software de EFA se han instalado correctamente.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   El comando debe devolver información acerca de las interfaces de EFA de Libfabric. En el siguiente ejemplo, se muestra el comando de salida.
   + `p3dn.24xlarge` con interfaz de red única

     ```
     provider: efa
     fabric: EFA-fe80::94:3dff:fe89:1b70
     domain: efa_0-rdm
     version: 2.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```
   + `p4d.24xlarge` y `p5.48xlarge` con múltiples interfaces de red

     ```
     provider: efa
     fabric: EFA-fe80::c6e:8fff:fef6:e7ff
     domain: efa_0-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c34:3eff:feb2:3c35
     domain: efa_1-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c0f:7bff:fe68:a775
     domain: efa_2-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::ca7:b0ff:fea6:5e99
     domain: efa_3-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```

## Paso 6: instalar NIXL
<a name="nixl-start-base-nixl"></a>

Instale NIXL. Para obtener más información sobre NIXL, consulte el [repositorio de NIXL](https://github.com/ai-dynamo/nixl).

------
#### [ Pre-built distributions ]

**Para instalar NIXL mediante PyPI**

1. Instale las dependencias requeridas.

   ```
   $ sudo apt install pip
   ```

1. Instale NIXL.

   ```
   $ pip install nixl
   ```

------
#### [ Build from source ]

**Compilar e instalar NIXL desde el origen**

1. Instale las dependencias requeridas.

   ```
   $ sudo apt install cmake pkg-config meson pybind11-dev libaio-dev nvidia-cuda-toolkit pip libhwloc-dev \
   && pip install meson ninja pybind11
   ```

1. Vaya al directorio de inicio.

   ```
   $ cd $HOME
   ```

1. Clone el repositorio oficial de NIXL en la instancia y vaya al repositorio clonado local.

   ```
   $ sudo git clone https://github.com/ai-dynamo/nixl.git && cd nixl
   ```

1. Cree e instale NIXL y especifique la ruta al directorio de instalación de Libfabric.

   ```
   $ sudo meson setup . nixl --prefix=/usr/local/nixl -Dlibfabric_path=/opt/amazon/efa
   $ cd nixl && sudo ninja && sudo ninja install
   ```

------

## Paso 7: instale NIXL Benchmark y pruebe la configuración de EFA y NIXL
<a name="nixl-start-base-tests"></a>

Instale NIXL Benchmark y ejecute una prueba para asegurarse de que su instancia temporal esté configurada correctamente para EFA y NIXL. NIXL Benchmark le permite confirmar que NIXL está instalado correctamente y que está funcionando como se esperaba. Para más información, consulte el [repositorio de nixlbench](https://github.com/ai-dynamo/nixl/tree/main/benchmark/nixlbench).

NIXL Benchmark (nixlbench) requiere ETCD para la coordinación entre el cliente y el servidor. Para usar ETCD con NIXL se requieren el servidor y el cliente de ETCD y la API CPP de ETCD.

------
#### [ Build from Docker ]

**Instalar y probar NIXL Benchmark mediante Docker**

1. Clone el repositorio oficial de NIXL en la instancia y vaya al directorio de compilación de nixlbench.

   ```
   $ git clone https://github.com/ai-dynamo/nixl.git
   $ cd nixl/benchmark/nixlbench/contrib
   ```

1. Cree el contenedor.

   ```
   $ ./build.sh
   ```

   Para obtener más información sobre las opciones de compilación de Docker, consulte el [repositorio de nixlbench](https://github.com/ai-dynamo/nixl/tree/main/benchmark/nixlbench).

1. Instale Docker.

   ```
   $ sudo apt install docker.io -y
   ```

1. Inicie el servidor ETCD para la coordinación.

   ```
   $ docker run -d --name etcd-server \
       -p 2379:2379 -p 2380:2380 \
       quay.io/coreos/etcd:v3.5.18 \
       /usr/local/bin/etcd \
       --data-dir=/etcd-data \
       --listen-client-urls=http://0.0.0.0:2379 \
       --advertise-client-urls=http://0.0.0.0:2379 \
       --listen-peer-urls=http://0.0.0.0:2380 \
       --initial-advertise-peer-urls=http://0.0.0.0:2380 \
       --initial-cluster=default=http://0.0.0.0:2380
   ```

1. Valide que el servidor ETCD esté ejecutándose.

   ```
   $ curl -L http://localhost:2379/health
   ```

   Resultado previsto:

   ```
   {"health":"true"}
   ```

1. Abra dos terminales para la instancia. En ambos terminales, ejecute el siguiente comando para verificar la instalación. El comando usa el servidor ETCD en la misma instancia, utiliza Libfabric como backend y funciona con la memoria de la GPU.

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM \
       --target_seg_type VRAM
   ```
**nota**  
Use el valor `DRAM` en lugar de `VRAM` para instancias que no sean de GPU.

------
#### [ Build from source ]

**importante**  
Siga esta pestaña solo si eligió **Compilar desde el origen** en el Paso 6.

**Instalar NIXL Benchmark**

1. Instale las dependencias de sistema requeridas.

   ```
   $ sudo apt install libgflags-dev
   ```

1. Instale el servidor y el cliente de ETCD.

   ```
   $ sudo apt install -y etcd-server etcd-client
   ```

1. Instale la API CPP de ETCD.

   1. Instale las dependencias requeridas para la API CPP de ETCD.

      ```
      $ sudo apt install libboost-all-dev libssl-dev libgrpc-dev libgrpc++-dev libprotobuf-dev protobuf-compiler-grpc libcpprest-dev
      ```

   1. Clone e instale la API CPP de ETCD.

      ```
      $ cd $HOME
      $ git clone https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git
      $ cd etcd-cpp-apiv3
      $ mkdir build && cd build
      $ cmake ..
      $ sudo make -j$(nproc) && sudo make install
      ```

1. Compile e instale nixlbench.

   ```
   $ sudo meson setup . $HOME/nixl/benchmark/nixlbench -Dnixl_path=/usr/local/nixl/
   $ sudo ninja && sudo ninja install
   ```

**Para probar la configuración de EFA y NIXL**

1. Inicie el servidor ETCD en la instancia.

   ```
   $ etcd --listen-client-urls "http://0.0.0.0:2379" \
       --advertise-client-urls "http://localhost:2379" &
   ```

1. Valide que el servidor ETCD esté ejecutándose.

   ```
   $ curl -L http://localhost:2379/health
   ```

   Resultado previsto:

   ```
   {"health":"true"}
   ```

1. Abra dos terminales para la instancia. En ambos terminales, complete los siguientes pasos para ejecutar nixlbench.

   1. Navegue hasta el directorio en el que está instalado nixlbench.

      ```
      $ cd /usr/local/nixlbench/bin/
      ```

   1. Ejecute la prueba y especifique el backend, la dirección del servidor ETCD y el tipo de segmento del iniciador. El siguiente comando usa el servidor ETCD en la misma instancia, utiliza Libfabric como backend y funciona con la memoria de la GPU. Las variables de entorno configuran lo siguiente:
      + `NIXL_LOG_LEVEL=INFO`: activa la salida de depuración detallada. También puede especificar `WARN` para recibir solamente mensajes de error.
      + `LD_LIBRARY_PATH`: establece la ruta de la biblioteca NIXL.

      Para obtener más información sobre los argumentos de prueba de NIXL, consulte el archivo [README de NIXLbench](https://github.com/ai-dynamo/nixl/blob/main/benchmark/nixlbench/README.md) en el reposorio nixlbench oficial.

      ```
      $ export NIXL_LOG_LEVEL=INFO
      $ export LD_LIBRARY_PATH=/usr/local/nixl/lib/$(gcc -dumpmachine):$LD_LIBRARY_PATH
      
      $ nixlbench --etcd-endpoints 'http://localhost:2379' \
          --backend 'LIBFABRIC' \
          --initiator_seg_type 'VRAM' \
          --target_seg_type 'VRAM'
      ```
**nota**  
Use el valor `DRAM` en lugar de `VRAM` para instancias que no sean de GPU.

------

## Paso 8: Instalar las aplicaciones de machine learning
<a name="nixl-start-base-app"></a>

Instale la aplicación de machine learning en la instancia temporal. El procedimiento de instalación varía en función de la aplicación de machine learning específica.

**nota**  
Consulte la documentación de su aplicación de machine learning para ver las instrucciones de instalación.

## Paso 9: cree una AMI habilitada para EFA y NIXL
<a name="nixl-start-base-ami"></a>

Después de haber instalado los componentes de software requeridos, crea una AMI que puede reutilizar para iniciar las instancias habilitadas para EFA.

**Para crear una AMI desde la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y elija **Acciones**, **Imagen**, **Crear imagen**.

1. En **Crear imagen**, realice lo siguiente:

   1. En **Nombre de imagen**, ingrese un nombre descriptivo para la AMI.

   1. (Opcional) En **Descripción de imagen**, ingrese una breve descripción del propósito la AMI.

   1. Elija **Crear imagen**.

1. En el panel de navegación, elija **AMI**.

1. Localice la AMI que creó en la lista. Espere a que el estado pase de `pending` a `available` antes de continuar con el paso siguiente.

## Paso 10: Termine la instancia temporal
<a name="nixl-start-base-terminate"></a>

En este punto, ya no necesita la instancia temporal que lanzó. Puede finalizar la instancia para dejar de incurrir en cargos debido a esta.

**Para finalizar la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y, a continuación, elija **Acciones**, **Estado de instancia**, **Finalizar instancia**.

1. Cuando se le indique que confirme, elija **Finalizar**.

## Paso 11: lance instancias habilitadas para EFA y NIXL
<a name="nixl-start-base-cluster"></a>

Lance las instancias habilitadas para EFA y NIXL mediante la AMI habilitada para EFA que creó en el **Paso 9** y el grupo de seguridad habilitado para EFA que creó en el **Paso 1**.

**Lanzar instancias habilitadas para EFA y NIXL**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Imágenes de aplicaciones y sistema operativo**, elija **Mis AMI** y, a continuación, seleccione la AMI que creó en el paso anterior.

1. En la sección **Tipo de instancia**, seleccione un tipo de instancia compatible.

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el **Paso 1**.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (*Opcional*) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. (*Opcional*) En la sección **Almacenamiento**, configure los volúmenes según sea necesario.

1. En el panel **Resumen**que se encuentra a la derecha, en **Cantidad de instancias**, ingrese la cantidad de instancias habilitadas para EFA que desea iniciar y, a continuación, elija **Iniciar instancias**.

## Paso 12: habilitar SSH sin contraseña
<a name="nixl-start-base-passwordless"></a>

Para permitir que las aplicaciones se ejecuten en todas las instancias del clúster, debe habilitar el acceso mediante SSH sin contraseña desde el nodo principal hasta los nodos miembro. El nodo principal es la instancia desde la que se ejecutan las aplicaciones. Las instancias restantes del clúster son los nodos miembros.

**Para habilitar SSH sin contraseña entre las instancias del clúster**

1. Seleccione una instancia del clúster como nodo principal y conéctese a ella.

1. Desactive `strictHostKeyChecking` y habilite `ForwardAgent` en el nodo principal. Abra `~/.ssh/config` con su editor de texto preferido y agregue lo siguiente.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Genere un par de claves de RSA.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   El par de claves se crea en el directorio `$HOME/.ssh/`.

1. Cambie los permisos de la clave privada en el nodo principal.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Abra `~/.ssh/id_rsa.pub` con su editor de texto preferido y copie la clave.

1. Para cada nodo miembro del clúster, realice lo siguiente:

   1. Conéctese a la instancia.

   1. Abra `~/.ssh/authorized_keys` con su editor de texto preferido y agregue la clave pública que copió anteriormente.

1. Para probar que SSH sin contraseña funciona como se esperaba, conecte al nodo principal y ejecute el siguiente comando.

   ```
   $ ssh member_node_private_ip
   ```

   Debe conectarse al nodo miembro sin que se le pida una clave o una contraseña.

**importante**  
Siga el Paso 13 solo si siguió el Paso 7.

## Paso 13: pruebe la configuración de EFA y NIXL en todas las instancias
<a name="nixl-start-base-test-multi"></a>

Ejecute una prueba para asegurarse de que sus instancias estén configuradas correctamente para EFA y NIXL.

------
#### [ Build from Docker ]

**Probar la configuración de EFA y NIXL en todas las instancias a través de Docker**

1. Seleccione dos hosts para ejecutar nixlbench benchmark. Utilice la dirección IP del primer host como IP del servidor ETCD para el intercambio de metadatos.

1. Inicie el servidor ETCD en el host 1.

   ```
   $ docker run -d --name etcd-server \
       -p 2379:2379 -p 2380:2380 \
       quay.io/coreos/etcd:v3.5.18 \
       /usr/local/bin/etcd \
       --data-dir=/etcd-data \
       --listen-client-urls=http://0.0.0.0:2379 \
       --advertise-client-urls=http://0.0.0.0:2379 \
       --listen-peer-urls=http://0.0.0.0:2380 \
       --initial-advertise-peer-urls=http://0.0.0.0:2380 \
       --initial-cluster=default=http://0.0.0.0:2380
   ```

1. Valide que el servidor ETCD esté ejecutándose.

   ```
   $ curl -L http://localhost:2379/health
   ```

   ```
   {"health":"true"}
   ```

1. Ejecute el punto de referencia nixlbench en el host 1.

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

1. Ejecute el punto de referencia nixlbench en el host 2.

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://ETCD_SERVER_IP:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

------
#### [ Build from source ]

**importante**  
Siga esta pestaña solo si eligió **Compilar desde el origen** en el Paso 6.

**Probar la configuración de EFA y NIXL en todas las instancias**

1. Seleccione dos hosts para ejecutar nixlbench benchmark. Utilice la dirección IP del primer host como IP del servidor ETCD para el intercambio de metadatos.

1. Lance el servidor ETCD en el host 1.

   ```
   $ etcd --listen-client-urls "http://0.0.0.0:2379" \
       --advertise-client-urls "http://localhost:2379" &
   ```

1. Valide que el servidor ETCD esté ejecutándose.

   ```
   $ curl -L http://localhost:2379/health
   ```

   ```
   {"health":"true"}
   ```

1. Ejecute el punto de referencia nixlbench en el host 1.

   ```
   $ export NIXL_LOG_LEVEL=INFO
   $ export LD_LIBRARY_PATH=$HOME/nixl/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
   
   $ nixlbench \
       --etcd-endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

1. Ejecute el punto de referencia nixlbench en el host 2.

   ```
   $ export NIXL_LOG_LEVEL=INFO
   $ export LD_LIBRARY_PATH=$HOME/nixl/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
   
   $ nixlbench \
       --etcd-endpoints http://ETCD_SERVER_IP:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

------

## Paso 14: pruebe el servicio de inferencia desagregada a través de vLLM (*opcional*)
<a name="nixl-start-base-serve"></a>

Una vez instalado NIXL, puede usar NIXL a través de marcos de inferencia y servicio de LLM, como vLLM, SGLang y TensorRT-LLM.

**Para atender su carga de trabajo de inferencias mediante vLLM**

1. Instale vLLM.

   ```
   $ pip install vllm
   ```

1. Inicie el servidor vLLM con NIXL. Los siguientes comandos de ejemplo crean una instancia de prellenado (productor) y una de decodificación (consumidor) para el establecimiento de comunicación NIXL, el conector KV, la función KV y el backend de transporte. Para ver ejemplos y scripts detallados, consulte la [Guía de uso de NIXLConnector](https://github.com/vllm-project/vllm/blob/2d977a7a9ead3179fde9ed55d69393ef7b6cec47/docs/features/nixl_connector_usage.md).

   Para usar NIXL con EFA, establezca las variables de entorno en función de su configuración y caso de uso.
   + Configuración de productor (prerellenar)

     ```
     $ vllm serve your-application \
         --port 8200 \
         --enforce-eager \
         --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
     ```
   + Configuración de consumidor (decodificador)

     ```
     $ vllm serve your-application \
         --port 8200 \
         --enforce-eager \
         --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
     ```

   El ejemplo de configuración anterior establece lo siguiente:
   + `kv_role` a `kv_both`, que permite una funcionalidad simétrica en la que el conector puede actuar como productor y consumidor. Esto proporciona flexibilidad para configuraciones y escenarios experimentales en los que la distinción de roles no está predeterminada.
   + `kv_buffer_device` a `cuda`, que permite utilizar la memoria de la GPU.
   + Backend de NIXL a `LIBFABRIC`, que permite que el tráfico de NIXL pase por EFA.

# Maximizar el ancho de banda de la red en instancias de Amazon EC2 con varias tarjetas de red
<a name="efa-acc-inst-types"></a>

Muchos tipos de instancias que admiten EFA también tienen varias tarjetas de red. Para obtener más información, consulte [Tarjetas de red](using-eni.md#network-cards). Si planea usar EFA con uno de estos tipos de instancias, le recomendamos la siguiente configuración básica:
+ Para la interfaz de red principal (índice de tarjetas de red `0`, índice de dispositivos `0`), cree una interfaz de ENA. No puede utilizar una interfaz de red exclusiva para EFA como interfaz de red principal.
+ Si el índice 0 de la tarjeta de red admite EFA, cree una interfaz de red solo para EFA para el índice de tarjetas de red `0`, índice de dispositivos `1`.
+ Para cada interfaz de red adicional, use el siguiente índice de tarjetas de red no utilizado, el índice de dispositivos `0` para una interfaz de solo EFA, y/o el índice de dispositivo `1` para una interfaz de red de ENA, según el caso de uso, como los requisitos de ancho de banda de ENA o el espacio de direcciones IP. Para ver un ejemplo de caso de uso, consulte [Configuración de EFA para instancias P5 y P5e](#efa-for-p5).

**nota**  
Las instancias P5 requieren que las interfaces de red se configuren de una manera específica para habilitar el máximo ancho de banda de la red. Para obtener más información, consulte [Configuración de EFA para instancias P5 y P5e](#efa-for-p5).

En los siguientes ejemplos, se muestra cómo lanzar una instancia según estas recomendaciones.

------
#### [ Instance launch ]

**Para especificar los EFA durante el lanzamiento de una instancia usando el asistente de inicialización de instancias**

1. En la sección **Configuración de red**, elija **Editar**.

1. Expanda **Configuración de red avanzada**.

1. Para la interfaz de red principal (índice de tarjetas de red `0`, índice de dispositivos `0`), cree una interfaz de ENA. No puede utilizar una interfaz de red exclusiva para EFA como interfaz de red principal.

1. Si el índice 0 de la tarjeta de red admite EFA, cree una interfaz de red solo para EFA para el índice de tarjetas de red `0`, índice de dispositivos `1`.

1. Para cada interfaz de red adicional, use el siguiente índice de tarjetas de red no utilizado, el índice de dispositivos `0` para una interfaz de solo EFA, y/o el índice de dispositivo `1` para una interfaz de red de ENA, según el caso de uso, como los requisitos de ancho de banda de ENA o el espacio de direcciones IP. Para ver un ejemplo de caso de uso, consulte [Configuración de EFA para instancias P5 y P5e](#efa-for-p5).

**Para especificar los EFA durante el lanzamiento de una instancia usando el comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)**  
En `--network-interfaces`, especifique el número requerido de interfaces de red. En la interfaz de red principal, especifique el `NetworkCardIndex=0`, `DeviceIndex=0` y `InterfaceType=interface`. Si el índice 0 de la tarjeta de red admite EFA, especifique `NetworkCardIndex=0`, `DeviceIndex=1` y `InterfaceType=efa-only`. En cualquier interfaz de red adicional, para `NetworkCardIndex` especifique el siguiente índice no utilizado, `DeviceIndex=0` para `InterfaceType=efa-only`, y/o `DeviceIndex=1` para `InterfaceType=interface`.

En el siguiente fragmento de comando de ejemplo, se muestra una solicitud con 32 dispositivos EFA y uno ENA.

```
$ aws ec2 run-instances \
 --instance-type p5.48xlarge \
 --count 1 \
 --key-name key_pair_name \
 --image-id ami-0abcdef1234567890 \
 --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=0,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=17,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=18,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=19,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=20,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=21,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=22,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=23,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=24,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=25,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=26,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=27,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=28,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=29,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=30,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=31,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
...
```

------
#### [ Launch templates ]

**Para añadir EFA a una plantilla de inicialización mediante la consola de Amazon EC2**

1. En la sección **Configuración de red**, amplíe **Configuración de red avanzada**.

1. Para la interfaz de red principal (índice de tarjetas de red `0`, índice de dispositivos `0`), cree una interfaz de ENA. No puede utilizar una interfaz de red exclusiva para EFA como interfaz de red principal.

1. Si el índice 0 de la tarjeta de red admite EFA, cree una interfaz de red solo para EFA para el índice de tarjetas de red `0`, índice de dispositivos `1`.

1. Para cada interfaz de red adicional, use el siguiente índice de tarjetas de red no utilizado, el índice de dispositivos `0` para una interfaz de solo EFA, y/o el índice de dispositivo `1` para una interfaz de red de ENA, según el caso de uso, como los requisitos de ancho de banda de ENA o el espacio de direcciones IP. Para ver un ejemplo de caso de uso, consulte [Configuración de EFA para instancias P5 y P5e](#efa-for-p5). 

**Para añadir EFA a una plantilla de inicialización mediante el comando [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html)**  
En `NetworkInterfaces`, especifique el número requerido de interfaces de red. En la interfaz de red principal, especifique el `NetworkCardIndex=0`, `DeviceIndex=0` y `InterfaceType=interface`. Si el índice 0 de la tarjeta de red admite EFA, especifique `NetworkCardIndex=0`, `DeviceIndex=1` y `InterfaceType=efa-only`. En cualquier interfaz de red adicional, para `NetworkCardIndex` especifique el siguiente índice no utilizado, `DeviceIndex=0` para `InterfaceType=efa-only`, y/o `DeviceIndex=1` para `InterfaceType=interface`.

En el siguiente fragmento, se muestra un ejemplo con 3 interfaces de red de las 32 interfaces de red posibles.

```
"NetworkInterfaces":[
{
  "NetworkCardIndex":0,
  "DeviceIndex":0,
  "InterfaceType": "interface",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 0,
  "DeviceIndex": 1,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 1,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 2,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 3,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
}
...
```

------

## Configuración de EFA para instancias P5 y P5e
<a name="efa-for-p5"></a>

Las instancias `p5.48xlarge` y `p5e.48xlarge` admiten 32 tarjetas de red y tienen una capacidad total de ancho de banda de red de 3200 Gbps, de los cuales hasta 800 Gbps se pueden utilizar para tráfico de red IP. Como el tráfico de red EFA e IP comparten los mismos recursos subyacentes, el ancho de banda utilizado por una reducirá el ancho de banda disponible para la otra. Esto significa que puede distribuir el ancho de banda de la red entre el tráfico EFA y el tráfico IP en cualquier combinación, siempre y cuando el ancho de banda total no supere los 3200 Gbps y el ancho de banda IP no supere los 800 Gbps. Por ejemplo, si usa 400 Gbps para un ancho de banda de IP, puede alcanzar un ancho de banda de EFA de hasta 2800 Gbps al mismo tiempo.

**Caso de uso 1: guardar las direcciones IP y evitar posibles problemas de IP en Linux**

Esta configuración proporciona hasta 3200 Gbps de ancho de banda de la red EFA y hasta 100 Gbps de ancho de banda de la red IP con una dirección IP privada. Esta configuración también ayuda a evitar posibles problemas de IP en Linux, como la asignación automática no permitida de direcciones IP públicas y los problemas de enrutamiento IP (problemas de mapeo de nombre de host a dirección IP y discrepancias de direcciones IP de origen), que pueden surgir si una instancia tiene varias interfaces de red. 
+ En la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de ENA.
+ Para el índice de tarjetas de red 0, índice de dispositivos 1, cree una interfaz de red exclusiva de EFA.
+ En el resto de las interfaces de red (índices de tarjeta de red 1 a 31, índice de dispositivos 0), use interfaces de red exclusiva de EFA.

**Caso de uso 2: ancho de banda máximo de la red EFA e IP**

Esta configuración proporciona hasta 3200 Gbps de ancho de banda de la red EFA y hasta 800 Gbps de ancho de banda de la red IP con ocho direcciones IP privadas. No puede asignar automáticamente direcciones IP públicas con esta configuración. Sin embargo, puede adjuntar una dirección IP elástica a la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0) después de la inicialización para la conectividad a Internet.
+ En la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de ENA.
+ En el resto de interfaces, haga lo siguiente:
  + Especifique las interfaces de red exclusiva de EFA en los índices de tarjetas de red 0, índice de dispositivo 1 y para índices de tarjeta de red 1, 2 y 3, use el índice de dispositivos 0.
  + Especifique una interfaz de red de ENA y cuatro interfaces de red exclusivas de EFA **en cada uno** de los siguientes subconjuntos de índices de tarjetas de red y use el índice de dispositivos 1 en la interfaz de red de ENA y el índice de dispositivos 0 en las interfaces de red exclusivas de EFA:
    + [4,5,6,7]
    + [8,9,10,11]
    + [12,13,14,15]
    + [16,17,18,19]
    + [20,21,22,23]
    + [24,25,26,27]
    + [28,29,30,31]

En el siguiente ejemplo, se ilustra esta configuración:

```
$ aws --region $REGION ec2 run-instances \
 --instance-type p5.48xlarge \
 --count 1 \
 --key-name key_pair_name \
 --image-id ami_id \
 --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=0,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=17,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=18,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=19,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=20,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=20,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=21,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=22,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=23,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=24,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=24,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=25,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=26,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=27,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=28,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=28,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=29,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=30,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=31,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
...
```

## Configuración de EFA para instancias P6-B200
<a name="efa-for-p6-b200"></a>

Las instancias P6-B200 tienen una capacidad total de ancho de banda de la red de 3200 Gbps, de los cuales se pueden utilizar hasta 1600 Gbps para ENA. Tienen 8 GPU y 8 tarjetas de red, donde cada tarjeta de red admite un ancho de banda EFA de hasta 400 Gbps y un ancho de banda ENA de 200 Gbps. Dado que el tráfico de EFA y ENA comparten los mismos recursos subyacentes, el ancho de banda utilizado por una reducirá el ancho de banda disponible para la otra.

**Caso de uso 1: guardar direcciones IP**

Esta configuración consume al menos una dirección IP privada por instancia y admite hasta 3200 Gbps de ancho de banda de EFA y 200 Gbps de ancho de banda de ENA.
+ En la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de ENA.
+ Para el índice de tarjetas de red 0, índice de dispositivos 1, cree una interfaz de red exclusiva de EFA.
+ En el resto de las 7 tarjetas de red (índices de tarjeta de red 1 a 7, índice de dispositivos 0), use interfaces de red exclusivas de EFA.

**Caso de uso 2: ancho de banda máximo de EFA y ENA**

Esta configuración consume al menos 8 direcciones IP privadas por instancia y admite hasta 3200 Gbps de ancho de banda de EFA y 1600 Gbps de ancho de banda de ENA.
+ En la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de ENA.
+ Para el índice de tarjetas de red 0, índice de dispositivos 1, cree una interfaz de red exclusiva de EFA.
+ Para el resto de las 7 tarjetas de red (índices de tarjeta de red 1-7), cree una interfaz exclusiva de EFA en el índice de dispositivo 0 y una interfaz de red de ENA en índice de dispositivos 1.

## Configuración de EFA para instancias P6e-GB200
<a name="efa-for-p6e"></a>

Las instancias P6e-GB200 se pueden configurar con hasta 17 tarjetas de red. La siguiente imagen muestra el diseño de la tarjeta de interfaz de red física (NIC) para las instancias P6e-GB200, junto con la asignación de los índices de tarjetas de red (NCI).

![\[Asignación de la tarjeta de interfaz de red física (NIC) y del índice de tarjeta de red (NCI) para las instancias P6e-GB200.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/p6e.png)


El NCI principal (índice 0) admite hasta 100 Gbps de ancho de banda de ENA. Los NCI con los siguientes índices admiten interfaces de red exclusivas de EFA y un ancho de banda de EFA de 400 Gbps: [1, 3, 5, 7, 9, 11, 13, 15]. Los NCI con los siguientes índices admiten un ancho de banda de ENA o EFA de hasta 200 Gbps: [2, 4, 6, 8, 10, 12, 14, 16].

Los NCI de los siguientes grupos comparten una NIC física subyacente en el host:
+ [1 y 2]
+ [3 y 4]
+ [5 y 6]
+ [7 y 8]
+ [9 y 10]
+ [11 y 12]
+ [13 y 14]
+ [15 y 16]

Cada NIC física admite hasta 400 Gbps de ancho de banda. Como los NCI de estos grupos comparten la misma NIC física subyacente, el ancho de banda utilizado por una reducirá el ancho de banda disponible para la otra. Por ejemplo, si el NCI 2 usa 200 Gbps de un ancho de banda de ENA, el NCI 1 puede usar un máximo de 200 Gbps de ancho de banda de EFA al mismo tiempo.

Cada GPU subyacente del host puede enviar tráfico directamente a través de los siguientes pares de NCI:
+ [1 y 3]
+ [5 y 7]
+ [9 y 11]
+ [13 y 15]

Cada GPU admite un ancho de banda de EFA de hasta 400 Gbps. Como las tarjetas de red de estos grupos comparten la misma GPU, el ancho de banda utilizado por una reducirá el ancho de banda disponible para la otra. Por ejemplo, si el NCI 1 usa 200 Gbps de un ancho de banda de EFA, el NCI 3 puede usar un máximo de 200 Gbps de ancho de banda de EFA al mismo tiempo. Por lo tanto, para alcanzar el máximo rendimiento de EFA, se recomienda realizar **una de las siguientes acciones** para lograr un ancho de banda EFA total de 1600 Gbps:
+ Agregue una interfaz de red exclusiva para EFA a un solo NCI de cada grupo para lograr 400 Gbps por interfaz de red (*4 interfaces de red de EFA x 400 Gbps*).
+ Agregue una interfaz de red exclusiva para EFA a cada NCI de cada grupo para lograr 200 Gbps por interfaz de red (*8 interfaces de red de EFA x 200 Gbps*).

Por ejemplo, la siguiente configuración proporciona hasta 1600 Gbps de ancho de banda de EFA con una sola interfaz de red exclusiva para EFA en cada grupo de NCI y hasta 100 Gbps de ancho de banda de la red de ENA con solo el NCI principal (índice 0).
+ En el NCI principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de red de ENA.
+ Agregue interfaces de red de EFA a lo siguiente:
  + NCI 1, índice de dispositivos 0
  + NCI 5, índice de dispositivos 0
  + NCI 9, índice de dispositivos 0
  + NCI 13, índice de dispositivos 0

## Configuración de EFA para instancias P6-B300
<a name="efa-for-p6-b300"></a>

Las instancias P6-B300 tienen una capacidad total de ancho de banda de la red de hasta 6400 Gbps para el tráfico EFA y hasta 3870 Gbps para el tráfico ENA. Disponen de 8 GPU y 17 tarjetas de red, mientras que la tarjeta de red principal solo es compatible con una interfaz de red ENA con un ancho de banda de hasta 350 Gbps. Las tarjetas de red secundarias son compatibles con un ancho de banda EFA de hasta 400 Gbps y ENA de hasta 220 Gbps. Dado que el tráfico de EFA y ENA comparten los mismos recursos subyacentes, el ancho de banda utilizado por una reducirá el ancho de banda disponible para la otra.

![\[Asignación de la tarjeta de interfaz de red física (NIC) y del índice de tarjeta de red (NCI) para las instancias P6-B300.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/p6-b300.png)


**Caso de uso 1: guardar direcciones IP**

Esta configuración consume al menos una dirección IP privada por instancia y admite hasta 6400 Gbps de ancho de banda de EFA y hasta 350 Gbps de ancho de banda de ENA.
+ En la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de ENA.
+ En el resto de las tarjetas de red (índices de tarjeta de red 1 a 16, índice de dispositivos 0), use interfaces de red solo de EFA.

```
--network-interfaces \
"NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
```

**Caso de uso 2: ancho de banda máximo de EFA y ENA**

Esta configuración consume al menos 17 direcciones IP privadas por instancia y admite hasta 6400 Gbps de ancho de banda de EFA y 3870 Gbps de ancho de banda de ENA.
+ En la interfaz de red principal (índice de tarjetas de red 0, índice de dispositivos 0), use una interfaz de ENA.
+ Para el resto de las tarjetas de red, cree una interfaz solo de EFA (índices de tarjeta de red 1-16, índice de dispositivos 0) y una interfaz de ENA (índices de tarjeta de red 1-16, índice de dispositivos 1).

```
--network-interfaces \
"NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=2,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=3,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=5,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=6,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=7,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=9,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=10,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=11,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=13,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=14,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=15,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface"
```

# Creación y asociación de un Elastic Fabric Adapter a una instancia de Amazon EC2
<a name="create-efa"></a>

Puede crear y asociar un EFA a una instancia de Amazon EC2 de modo muy similar a otras interfaces de red elástica en Amazon EC2. Sin embargo, a diferencia de las interfaces de red elástica, los EFA no se pueden asociar o desasociar de una instancia con el estado `running`.

**Consideraciones**
+  Puede cambiar el grupo de seguridad que está asociado a un EFA. Para habilitar la funcionalidad de omisión del sistema operativo, el EFA debe formar parte de un grupo de seguridad que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. Para obtener más información, consulte [Paso 1: preparar un grupo de seguridad habilitado para EFA](efa-start.md#efa-start-security).

  Cambie el grupo de seguridad asociado a un EFA de la misma manera que cambia el grupo de seguridad que está asociado a una interfaz de red elástica. Para obtener más información, consulte [Modificar atributos de interfaz de red](modify-network-interface-attributes.md).
+ Puede asignar una dirección IP elástica (IPv4) e IPv6 a una interfaz de red EFA (EFA con ENA) de la misma manera que asigna una dirección IP a una interfaz de red elástica. Para obtener más información, consulte [Administración de direcciones IP](managing-network-interface-ip-addresses.md).

  No puede asignar una dirección IP a una interfaz de red exclusiva para EFA.

**Topics**
+ [Crear un EFA](#efa-create)
+ [Asociar un EFA a una instancia detenida](#efa-attach)
+ [Asociar un EFA al iniciar una instancia](#efa-launch)
+ [Agregar un EFA a una plantilla de inicialización](#efa-launch-template)

## Crear un EFA
<a name="efa-create"></a>

Puede crear un EFA en una subred en una VPC. No puede mover el EFA a otra subred después de crearla y solo puede adjuntarlo a instancias detenidas en la misma zona de disponibilidad.

------
#### [ Console ]

**Cómo crear una interfaz de red EFA (EFA con ENA o solo ENA)**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Interfaces de red** y, a continuación, **Crear interfaz de red**.

1. En **Descripción**, escriba un nombre descriptivo para el EFA.

1. En **Subred**, seleccione la subred en la que crear el EFA.

1. En **Tipo de interfaz**, seleccione una de las siguientes opciones:
   + **EFA con ENA**: para crear una interfaz de red que admita tanto dispositivos ENA como EFA.
   + **Solo EFA**: para crear una interfaz de red únicamente con un dispositivo EFA.

1. (Para EFA solo con ENA) Configure la dirección IP y la asignación de prefijos para la interfaz de red. El tipo de direcciones IP y prefijos que puede asignar depende de la subred seleccionada. Para subredes solo IPv4, solo puede asignar direcciones IP y prefijos IPv4. Para subredes solo IPv6, solo puede asignar direcciones IP y prefijos IPv6. Para subredes de doble pila, puede asignar direcciones IP y prefijos tanto IPv4 como IPv6. 
**nota**  
No puede asignar direcciones IP a una interfaz de red solo para EFA.

   1. En **Dirección IPv4 privada** o **Dirección IPv6**, elija **Asignación automática** para que Amazon EC2 asigne automáticamente una dirección IP de la subred seleccionada, o elija **Personalizada** para especificar manualmente la dirección IP que se va a asignar.

   1. Si asigna una dirección IPv6, opcionalmente puede habilitar **Asignar IP IPv6 principal**. De esta manera se asigna una dirección de unidifusión global (GUA) IPv6 principal a la interfaz de red. La asignación de una dirección IPv6 principal le permite evitar interrumpir el tráfico a las instancias o ENI. Para obtener más información, consulte [Direcciones IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#vpc-ipv6-addresses).

   1. En **Delegación de prefijos IPv4** o **Delegación de prefijos IPv6**, elija **Asignación automática** para que Amazon EC2 asigne automáticamente un prefijo del bloque de CIDR de la subred, o elija **Personalizado** para especificar manualmente un prefijo del bloque de CIDR de la subred. Si especifica un prefijo, AWS verifica que aún no esté asignado a otro recurso. Para obtener más información, consulte [Delegación de prefijos para las interfaces de red de Amazon EC2](ec2-prefix-eni.md)

   1. (Opcional) Configure los ajustes de **tiempo de espera del seguimiento de la conexión inactiva**. Para obtener más información, consulte [Tiempo de espera de seguimiento de conexiones inactivas](security-group-connection-tracking.md#connection-tracking-timeouts)
      + **Tiempo de espera establecido de TCP**: tiempo de espera en segundos para las conexiones TCP inactivas en un estado establecido. Valor mínimo: 60 segundos. Valor máximo: 432 000 segundos (5 días). Valor predeterminado: 432 000 segundos. Valor recomendado: menos de 432 000 segundos.
      + **Tiempo de espera de UDP**: tiempo de espera en segundos para los flujos de UDP inactivos que solo han registrado tráfico en una sola dirección o en una sola transacción de solicitud-respuesta. Valor mínimo: 30 segundos. Valor máximo: 60 segundos. Valor predeterminado: 30 segundos.
      + **Tiempo de espera del flujo de UDP**: tiempo de espera en segundos para los flujos de UDP inactivos clasificados como flujos que han recibido más de una transacción de solicitud-respuesta. Valor mínimo: 60 segundos. Valor máximo: 180 segundos (3 minutos). Valor predeterminado: 180 segundos.

1. En **Grupos de seguridad**, seleccione uno o varios grupos de seguridad.

1. Elija **Crear interfaz de red**.

------
#### [ AWS CLI ]

**Para crear un EFA**  
Use el comando [create-global-network](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html). Para `--interface-type`, especifique `efa` para una interfaz de red EFA o `efa-only` para una interfaz de red exclusiva para EFA.

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --interface-type efa \
    --description "my efa"
```

------
#### [ PowerShell ]

**Para crear un EFA**  
Utilice el cmdlet [New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html). Para `-InterfaceType`, especifique `efa` para una interfaz de red EFA o `efa-only` para una interfaz de red exclusiva para EFA

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -InterfaceType efa `
    -Description "my efa"
```

------

## Asociar un EFA a una instancia detenida
<a name="efa-attach"></a>

Puede adjuntar un EFA a cualquier instancia admitida que esté en el estado `stopped`. No puede adjuntar un EFA a una instancia que esté en el estado `running`. Para obtener más información sobre los tipos de instancia admitidos, consulte [Tipos de instancias admitidas](efa.md#efa-instance-types).

Puede asociar un EFA a una instancia de la misma manera que asocia una interfaz de red elástica a una instancia. Para obtener más información, consulte [Asociación de una interfaz de red](network-interface-attachments.md#attach_eni).

## Asociar un EFA al iniciar una instancia
<a name="efa-launch"></a>

------
#### [ AWS CLI ]

**Para adjuntar un EFA existente al iniciar una instancia**  
Utilice el comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) con la opción `--network-interfaces`. En la interfaz de red principal, especifique una interfaz de red EFA y `NetworkCardIndex=0`, `DeviceIndex=0`. Para adjuntar varias interfaces de red EFA, consulte [Maximizar el ancho de banda de la red](efa-acc-inst-types.md).

```
--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    NetworkInterfaceId=eni-1234567890abcdef0, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"
```

**Para adjuntar un EFA nuevo al iniciar una instancia**  
Utilice el comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) con la opción `--network-interfaces`. En la interfaz de red principal, use el `NetworkCardIndex=0`, `DeviceIndex=0` y `InterfaceType=efa`. Si va a conectar varias interfaces de red EFA, consulte [Maximizar el ancho de banda de la red](efa-acc-inst-types.md).

```
--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    InterfaceType=efa, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"
```

------
#### [ PowerShell ]

**Para adjuntar un EFA existente al iniciar una instancia**  
Utilice el cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) con el parámetro `-NetworkInterfaces`.

```
-NetworkInterface $networkInterface
```

Defina la interfaz de red de la siguiente manera.

```
$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.NetworkInterfaceId = "eni-1234567890abcdef0"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"
```

**Para adjuntar un EFA nuevo al iniciar una instancia**  
Utilice el cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) con el parámetro `-NetworkInterfaces`.

```
-NetworkInterface $networkInterface
```

Defina la interfaz de red de la siguiente manera.

```
$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.InterfaceType = "efa"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"
```

------

## Agregar un EFA a una plantilla de inicialización
<a name="efa-launch-template"></a>

Puede crear una plantilla de inicialización que contenga la información de configuración necesaria para iniciar instancias de EFA. Puede especificar ambas interfaces de red EFA y solo EFA en la plantilla de inicialización. Para crear una plantilla de inicialización habilitada para EFA, cree una nueva plantilla de inicialización y especifique un tipo de instancia admitido, la AMI habilitada para EFA y un grupo de seguridad habilitado para EFA. Para `NetworkInterfaces`, especifique las interfaces de red EFA que deben adjuntarse. En la interfaz de red principal, use el `NetworkCardIndex=0`, `DeviceIndex=0` y `InterfaceType=efa`. Si va a conectar varias interfaces de red EFA, consulte [Maximizar el ancho de banda de la red en instancias de Amazon EC2 con varias tarjetas de red](efa-acc-inst-types.md).

Puede aprovechar las plantillas de inicialización para iniciar instancias habilitadas para EFA con otros servicios de AWS, como [AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html) o [AWS ParallelCluster](https://docs.aws.amazon.com/parallelcluster/latest/ug/what-is-aws-parallelcluster.html).

Para obtener más información acerca de la creación de plantillas de inicialización, consulte [Creación de una plantilla de inicialización de Amazon EC2](create-launch-template.md).

# Desasociación y eliminación de un EFA de una instancia de Amazon EC2
<a name="detach-efa"></a>

Puede desasociar un EFA de una instancia de Amazon EC2 y eliminarlo de la misma manera que otras interfaces de red elástica en Amazon EC2.

## Separar un EFA
<a name="efa-detach"></a>

Para separar un EFA de una instancia, primero debe detener la instancia. No puede separar un EFA de una instancia que está en estado de ejecución.

Separe un EFA desde una instancia de la misma manera que separe una interfaz de red elástica de una instancia. Para obtener más información, consulte [Desasociación de una interfaz de red](network-interface-attachments.md#detach_eni).

## Eliminar un EFA
<a name="efa-delete"></a>

Para eliminar un EFA, primero debe separarlo de la instancia. No puede eliminar un EFA mientras esté conectado a una instancia.

Los EFAs se eliminan de la misma manera que las interfaces de red elástica. Para obtener más información, consulte [Eliminar una interfaz de red](delete_eni.md).

# Monitoreo de un Elastic Fabric Adapter en Amazon EC2
<a name="efa-working-monitor"></a>

Puede utilizar las siguientes características para monitorizar el rendimiento de sus Elastic Fabric Adapters.

**Topics**
+ [Métricas de controladores de EFA para una instancia de Amazon EC2](#efa-driver-metrics)
+ [Registros de flujo de Amazon VPC](#efa-flowlog)
+ [Amazon CloudWatch](#efa-cloudwatch)

## Métricas de controladores de EFA para una instancia de Amazon EC2
<a name="efa-driver-metrics"></a>

El controlador de Elastic Fabric Adapter (EFA) publica varias métricas de las instancias que tienen interfaces de EFA conectadas, en tiempo real. Puede utilizar estas métricas para solucionar problemas de rendimiento y redes de las aplicaciones, seleccionar el tamaño adecuado de clúster para una carga de trabajo, planificar actividades de escalado de manera proactiva y realizar pruebas de rendimiento en aplicaciones para determinar si aprovechan al máximo el rendimiento de EFA disponible en una instancia.

**Topics**
+ [Métricas del controlador de EFA disponibles](#available-efa-metrics)
+ [Recuperación de las métricas del controlador de EFA para su instancia](#view-efa-driver-metrics)

### Métricas del controlador de EFA disponibles
<a name="available-efa-metrics"></a>

El controlador de EFA publica las siguientes métricas a la instancia en tiempo real. Estas métricas proporcionan el número acumulado de errores, eventos de conexión y paquetes o bytes enviados, recibidos, retransmitidos o descartados por los dispositivos de EFA conectados desde el lanzamiento de la instancia o el último reinicio del controlador.


| Métrica | Descripción | Tipos de instancias admitidas | 
| --- | --- | --- | 
| tx\$1bytes |  El número de bytes que se transmiten. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| rx\$1bytes |  El número de bytes recibidos. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| tx\$1pkts |  El número de paquetes que se transmiten. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rx\$1pkts |  El número de paquetes recibidos. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rx\$1drops |  El número de paquetes que fueron recibidos y luego descartados. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| send\$1bytes |  El número de bytes enviados mediante operaciones de envío. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| recv\$1bytes |  El número de bytes recibidos mediante operaciones de envío. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| send\$1wrs |  El número de paquetes enviados mediante operaciones de envío. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| recv\$1wrs |  El número de paquetes recibidos mediante operaciones de envío. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1write\$1wrs |  El número de operaciones de escritura rdma completadas. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1read\$1wrs |  El número de operaciones de lectura rdma completadas. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1write\$1bytes |  El número de bytes escritos en él por otras instancias mediante operaciones de escritura rdma. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1read\$1bytes |  El número de bytes recibidos mediante operaciones de lectura rdma. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1write\$1wr\$1err |  El número de operaciones de escritura rdma que tuvieron errores locales o remotos. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1read\$1wr\$1err |  El número de operaciones de lectura rdma que tuvieron errores locales o remotos. Unidad: recuento  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1read\$1resp\$1bytes |  El número de bytes enviados en respuesta a operaciones de lectura de rdma. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| rdma\$1write\$1recv\$1bytes |  El número de bytes recibidos mediante operaciones de escritura rdma. Unidades: bytes  | Todos los tipos de instancias compatibles con EFA | 
| retrans\$1bytes |  El número de bytes SRD de EFA retransmitidos. Unidad: recuento  | Tipos de instancia Nitro v4 y posteriores compatibles con EFA | 
| retrans\$1pkts |  El número de paquetes SRD de EFA retransmitidos. Unidades: bytes  | Tipos de instancia Nitro v4 y posteriores compatibles con EFA | 
| retrans\$1timeout\$1events |  El número de veces que se agotó el tiempo de espera del tráfico SRD de EFA y se produjo un cambio en la ruta de la red. Unidad: recuento  | Tipos de instancia Nitro v4 y posteriores compatibles con EFA | 
| impaired\$1remote\$1conn\$1events |  El número de veces que las conexiones SRD de EFA estuvieron dañadas, lo que produjo un límite de tasa de rendimiento reducido. Unidad: recuento  | Tipos de instancia Nitro v4 y posteriores compatibles con EFA | 
| unresponsive\$1remote\$1events |  El número de veces que una conexión remota SRD de EFA no respondió. Unidad: recuento  | Tipos de instancia Nitro v4 y posteriores compatibles con EFA | 

Para obtener más información sobre los tipos de instancia compatibles con EFA, consulte [Tipos de instancias admitidas](efa.md#efa-instance-types).

### Recuperación de las métricas del controlador de EFA para su instancia
<a name="view-efa-driver-metrics"></a>

Puede usar la herramienta de línea de comandos [rdma-tool](https://man7.org/linux/man-pages/man8/rdma.8.html) para recuperar las métricas de todas las interfaces de EFA conectadas a una instancia de la siguiente manera:

```
$ rdma -p statistic show
link rdmap0s31/1 
    tx_bytes 0 
    tx_pkts 0 
    rx_bytes 0 
    rx_pkts 0 
    rx_drops 0 
    send_bytes 0 
    send_wrs 0 
    recv_bytes 0 
    recv_wrs 0 
    rdma_read_wrs 0 
    rdma_read_bytes 0 
    rdma_read_wr_err 0 
    rdma_read_resp_bytes 0 
    rdma_write_wrs 0 
    rdma_write_bytes 0 
    rdma_write_wr_err 0
    retrans_bytes 0
    retrans_pkts 0
    retrans_timeout_events 0
    unresponsive_remote_events 0
    impaired_remote_conn_events 0
```

Como alternativa, puede recuperar las métricas de cada interfaz de EFA adjunta a una instancia desde los archivos sys mediante el siguiente comando.

```
$ more /sys/class/infiniband/device_number/ports/port_number/hw_counters/* | cat
```

Por ejemplo

```
$ more /sys/class/infiniband/rdmap0s31/ports/1/hw_counters/* | cat
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/lifespan
::::::::::::::
12
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_resp_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_drops
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_bytes
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_pkts
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_timeout_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/unresponsive_remote_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/impaired_remote_conn_events
::::::::::::::
0
```

## Registros de flujo de Amazon VPC
<a name="efa-flowlog"></a>

Puede crear un registro de flujo de Amazon VPC para capturar información acerca el tráfico entrante y saliente de un EFA. Los datos del registro de flujo se pueden publicar en Amazon CloudWatch Logs y Amazon S3. Una vez creado un registro de flujo, puede recuperarlo y ver sus datos en el destino elegido. Para obtener más información, consulte [Registros de flujo de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) en la *Guía del usuario de Amazon VPC*.

Un registro de flujo para un EFA se crea de la misma manera que se crea un registro de flujo para una interfaz de red elástica. Para obtener más información, consulte [Creación de un registro de flujo](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-flow-logs.html#create-flow-log) en la *Guía del usuario de Amazon VPC*.

En las entradas de registro de flujo, el tráfico de EFA se identifica mediante `srcAddress` y `destAddress` que tienen formato de direcciones MAC, tal como se muestra en el ejemplo siguiente.

```
version accountId  eniId        srcAddress        destAddress       sourcePort destPort protocol packets bytes start      end        action log-status
2       3794735123 eni-10000001 01:23:45:67:89:ab 05:23:45:67:89:ab -          -        -        9       5689  1521232534 1524512343 ACCEPT OK
```

## Amazon CloudWatch
<a name="efa-cloudwatch"></a>

Si utiliza EFA en un clúster de Amazon EKS, puede supervisar los EFA a través de la información de contenedores de CloudWatch. Información de contenedores de Amazon CloudWatch admite todas las [métricas del controlador de EFA](#efa-driver-metrics), excepto: `retrans_bytes`, `retrans_pkts`, `retrans_timeout_events`, `unresponsive_remote_events` y `impaired_remote_conn_events`.

Para obtener más información, consulte [Métricas de información de contenedores de Kubernetes y de Amazon EKS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-enhanced-EKS.html#Container-Insights-metrics-EFA) en la *Guía del usuario de Amazon CloudWatch*.

# Verificar el instalador de EFA mediante una suma de comprobación
<a name="efa-verify"></a>

Si lo desea, puede verificar el archivo tarball de EFA (archivo `.tar.gz`) utilizando una suma de comprobación MD5 o SHA256. Le recomendamos que lo haga para verificar la identidad del editor de software y para comprobar que la aplicación no se ha modificado ni dañado desde que se publicó.

**Para verificar el tarball**  
Use la utilidad **md5sum** para la suma de comprobación MD5 o la utilidad **sha256sum** para la suma de comprobación SHA256, y especifique el nombre de archivo tarball. Debe ejecutar el comando desde el directorio en el que guardó el archivo tarball.
+ MD5

  ```
  $  md5sum tarball_filename.tar.gz
  ```
+ SHA256

  ```
  $  sha256sum tarball_filename.tar.gz
  ```

Los comandos deben devolver un valor de suma de comprobación en el siguiente formato.

```
checksum_value tarball_filename.tar.gz
```

Compare el valor de suma de comprobación devuelto por el comando con el valor de suma de comprobación proporcionado en la tabla siguiente. Si las sumas de comprobación coinciden, entonces es seguro ejecutar el script de instalación. Si las sumas de comprobación no concuerdan, no ejecute el script de instalación y contacte con Soporte.

Por ejemplo, el siguiente comando verifica el tarball 1.9.4 de EFA utilizando la suma de comprobación SHA256.

```
$  sha256sum aws-efa-installer-1.9.4.tar.gz
```

Ejemplo de código de salida:

```
1009b5182693490d908ef0ed2c1dd4f813cc310a5d2062ce9619c4c12b5a7f14 aws-efa-installer-1.9.4.tar.gz
```

En la tabla siguiente se muestran las sumas de comprobación de las versiones recientes de EFA.


| Versión | Sumas de comprobación | 
| --- | --- | 
| EFA 1.47.0 |  **MD5: **`c81d4caf24dabc04a6e4818590620f5f` **SHA256: **`2df4201e046833c7dc8160907bee7f52b76ff80ed147376a2d0ed8a0dd66b2db`  | 
| EFA 1.46.0 |  **MD5: **a88bbd9b71624d7ca401b54bc2fc0c19`` **SHA256: **`8302bd7849afb95c903a875d7dcb6f85b3d7629e9a8b67d020031cfc6f4d0ee1`  | 
| EFA 1.45.1 |  **MD5: **91c3c87e16bbcaca1513252c38b771bb`` **SHA256: **`9aeb20c645135b6039cc08986d8f14e63280f7839e882a74df5e83627ffeaa17`  | 
| EFA 1.45.0 |  **MD5: **800aeddfa9d9c5f139a7b8f7c4fec627`` **SHA256: **`25ba26a0877fe3317390dc126aad2f23e27fc461cf0b940004f032cb342fa539`  | 
| EFA 1.44.0 |  **MD5: **d024f6bebe080db42745103b84ca7c43`` **SHA256: **`f129a5b44a49d593d247e55a59eb9bcb57121566e1c2e42b832a4e794fa83d8a`  | 
| EFA 1.43.3 |  **MD5: **`4dbc6eeecc516760253c10cbedb6319d` **SHA256: **`6c470ebce254c7165347b5048895ac2996c88567271642297f4c597738300652`  | 
| EFA 1.43.2 |  **MD5: **`7287b25a07c9747c0d4001e8fc5f59b2` **SHA256: **`de15c5bdbc83b952afbde876110830c604ad0796680e5157c05f7c1979a41069`  | 
| EFA 1.43.1 |  **MD5: **`7cfafc8debaea51dd4966fa0b2bba673` **SHA256: **54211eda0c193138ee8ed09b5fb41c41fc76fe0a77935fa4ec8d989466342740``  | 
| EFA 1.43.0 |  **MD5: **`f2b3dd7dc8670b541f7c23fd58e5e503` **SHA256: **`786df3458c499237be33bb8e50ffd4da7c18c20e254380ffc80fb90833d8cc73`  | 
| EFA 1.42.0 |  **MD5: **`94b2b1db09da1dde08ec049db1f24370` **SHA256: **`4114fe612905ee05083ae5cb391a00a012510f3abfecc642d86c9a5ae4be9008`  | 
| EFA 1.41.0 |  **MD5: **`086181c3ee3f8da512fc6e1c795e8936` **SHA256: **`3506354cdfbe31ff552fe75f5d0d9bb7efd29cf79bd99457347d29c751c38f9f`  | 
| EFA 1.40.0 |  **MD5: **`f3ec6f73fbeaccba082327507581157c` **SHA256: **`30491b0fe7c3470d4439594538855c981b05fa69862d74f8c05eb9b97912368a`  | 
| EFA 1.39.0 |  **MD5: **`c223d5954a85a7fbcd248c942b866e43` **SHA256: **`2cbc028c03064633bb990782b47c36156637769e2f48704417a9c700a7a32101`  | 
| EFA 1.38.1 |  **MD5: **`f112569e828ab65187777f794bab542c` **SHA256: **`83923374afd388b1cfcf4b3a21a2b1ba7cf46a01a587f7b519b8386cb95e4f81`  | 
| EFA 1.38.0 |  **MD5: **`43a2a446b33a2506f40853d55059f1ea` **SHA256: **`4f436954f35ad53754b4d005fd8d0be63de3b4184de41a695b504bdce0fecb22`  | 
| EFA 1.37.0 |  **MD5: **`6328070192bae920eca45797ad4c1db1` **SHA256: **`2584fc3c8bb99f29b3285e275747ff09d67c18e162c2a652e36c976b72154bfb`  | 
| EFA 1.36.0 |  **MD5: **`1bec83180fbffb23452ab6469ca21dfa` **SHA256: **`de183f333cfb58aeb7908a67bf9106985ba3ccb7f8638b851d2a0d8dbfacaec4`  | 
| EFA 1.35.0 |  **MD5: **`252f03c978dca5f8e8d9f34e488b256e` **SHA256: **`432b6ad4368ba0cd8b902729d14a908a97be7a3dcc5239422ea994a47f35a5e1`  | 
| EFA 1.34.0 |  **MD5: **`5cd4b28d27a31677c16139b54c9acb45` **SHA256: **`bd68839e741b0afd3ec2e37d50603803cfa7a279c120f0a736cc57c2ff2d7fdc`  | 
| EFA 1.33.0 |  **MD5: **`e2f61fccbcaa11e2ccfddd3660522276` **SHA256: **`0372877b87c6a7337bb7791d255e1053b907d030489fb2c3732ba70069185fce`  | 
| EFA 1.32.0 |  **MD5: **`db8d65cc028d8d08b5a9f2d88881c1b1` **SHA256: **`5f7233760be57f6fee6de8c09acbfbf59238de848e06048dc54d156ef578fc66`  | 
| EFA 1.31.0 |  **MD5: **`856352f12bef2ccbadcd75e35aa52aaf` **SHA256: **`943325bd37902a4300ac9e5715163537d56ecb4e7b87b37827c3e547aa1897bf`  | 
| EFA 1.30.0 |  **MD5: **`31f48e1a47fe93ede8ebd273fb747358` **SHA256: **`876ab9403e07a0c3c91a1a34685a52eced890ae052df94857f6081c5f6c78a0a`  | 
| EFA 1.29.1 |  **MD5: **`e1872ca815d752c1d7c2b5c175e52a16` **SHA256: **`178b263b8c25845b63dc93b25bcdff5870df5204ec509af26f43e8d283488744`  | 
| EFA 1.29.0 |  **MD5: **`39d06a002154d94cd982ed348133f385` **SHA256: **`836655f87015547e733e7d9f7c760e4e24697f8bbc261bb5f3560abd4206bc36`  | 
| EFA 1.28.0 |  **MD5: **`9dc13b7446665822605e66febe074035` **SHA256: **`2e625d2d6d3e073b5178e8e861891273d896b66d03cb1a32244fd56789f1c435`  | 
| EFA 1.27.0 |  **MD5: **`98bfb515ea3e8d93f554020f3837fa15` **SHA256: **`1d49a97b0bf8d964d91652a79ac851f2550e33a5bf9d0cf86ec9357ff6579aa3`  | 
| EFA 1.26.1 |  **MD5: **`884e74671fdef4725501f7cd2d451d0c` **SHA256: **`c616994c924f54ebfabfab32b7fe8ac56947fae00a0ff453d975e298d174fc96`  | 
| EFA 1.26.0 |  **MD5: **`f8839f12ff2e3b9ba09ae8a82b30e663` **SHA256: **`bc1abc1f76e97d204d3755d2a9ca307fc423e51c63141f798c2f15be3715aa11`  | 
| EFA 1.25.1 |  **MD5: **`6d876b894547847a45bb8854d4431f18` **SHA256: **`d2abc553d22b89a4ce92882052c1fa6de450d3a801fe005da718b7d4b9602b06`  | 
| EFA 1.25.0 |  **MD5: **`1993836ca749596051da04694ea0d00c` **SHA256: **`98b7b26ce031a2d6a93de2297cc71b03af647194866369ca53b60d82d45ad342`  | 
| EFA 1.24.1 |  **MD5: **`211b249f39d53086f3cb0c07665f4e6f` **SHA256: **`120cfeec233af0955623ac7133b674143329f9561a9a8193e473060f596aec62`  | 
| EFA 1.24.0 |  **MD5: **`7afe0187951e2dd2c9cc4b572e62f924` **SHA256: **`878623f819a0d9099d76ecd41cf4f569d4c3aac0c9bb7ba9536347c50b6bf88e`  | 
| EFA 1.23.1 |  **MD5: **`22491e114b6ee7160a8290145dca0c28` **SHA256: **`5ca848d8e0ff4d1571cd443c36f8d27c8cdf2a0c97e9068ebf000c303fc40797`  | 
| EFA 1.23.0 |  **MD5: **`38a6d7c1861f5038dba4e441ca7683ca` **SHA256: **`555d497a60f22e3857fdeb3dfc53aa86d05926023c68c916d15d2dc3df6525bd`  | 
| EFA 1.22.1 |  **MD5: **`600c0ad7cdbc06e8e846cb763f92901b` **SHA256: **`f90f3d5f59c031b9a964466b5401e86fd0429272408f6c207c3f9048254e9665`  | 
| EFA 1.22.0 |  **MD5: **`8f100c93dc8ab519c2aeb5dab89e98f8` **SHA256: **`f329e7d54a86a03ea51da6ea9a5b68fb354fbae4a57a02f9592e21fce431dc3a`  | 
| EFA 1.21.0 |  **MD5: **`959ccc3a4347461909ec02ed3ba7c372` **SHA256: **`c64e6ca34ccfc3ebe8e82d08899ae8442b3ef552541cf5429c43d11a04333050`  | 
| EFA 1.20.0 |  **MD5: **`7ebfbb8e85f1b94709df4ab3db47913b` **SHA256: **`aeefd2681ffd5c4c631d1502867db5b831621d6eb85b61fe3ec80df983d1dcf0`  | 
| EFA 1.19.0 |  **MD5: **`2fd45324953347ec5518da7e3fefa0ec` **SHA256: **`99b77821b9e72c8dea015cc92c96193e8db307deee05b91a58094cc331f16709`  | 
| EFA 1.18.0 |  **MD5: **`fc2571a72f5d3c7b7b576ce2de38d91e` **SHA256: **`acb18a0808aedb9a5e485f1469225b9ac97f21db9af78e4cd6939700debe1cb6`  | 
| EFA 1.17.3 |  **MD5: **`0517df4a190356ab559235147174cafd` **SHA256: **`5130998b0d2883bbae189b21ab215ecbc1b01ae0231659a9b4a17b0a33ebc6ca`  | 
| EFA 1.17.2 |  **MD5: **`a329dedab53c4832df218a24449f4c9a` **SHA256: **`bca1fdde8b32b00346e175e597ffab32a09a08ee9ab136875fb38283cc4cd099`  | 
| EFA 1.17.1 |  **MD5: **`733ae2cfc9d14b52017eaf0a2ab6b0ff` **SHA256: **`f29322640a88ae9279805993cb836276ea240623820848463ca686c8ce02136f`  | 
| EFA 1.17.0 |  **MD5: **`d430fc841563c11c3805c5f82a4746b1` **SHA256: **`75ab0cee4fb6bd38889dce313183f5d3a83bd233e0a6ef6205d8352821ea901d`  | 
| EFA 1.16.0 |  **MD5: **`399548d3b0d2e812d74dd67937b696b4` **SHA256: **`cecec36495a1bc6fdc82f97761a541e4fb6c9a3cbf3cfcb145acf25ea5dbd45b`  | 
| EFA 1.15.2 |  **MD5: **`955fea580d5170b05823d51acde7ca21` **SHA256: **`84df4fbc1b3741b6c073176287789a601a589313accc8e6653434e8d4c20bd49`  | 
| EFA 1.15.1 |  **MD5: **`c4610267039f72bbe4e35d7bf53519bc` **SHA256: **`be871781a1b9a15fca342a9d169219260069942a8bda7a8ad06d4baeb5e2efd7`  | 
| EFA 1.15.0 |  **MD5: **`9861694e1cc00d884fadac07d22898be` **SHA256: **`b329862dd5729d2d098d0507fb486bf859d7c70ce18b61c302982234a3a5c88f`  | 
| EFA 1.14.1 |  **MD5: **`50ba56397d359e57872fde1f74d4168a` **SHA256: **`c7b1b48e86fe4b3eaa4299d3600930919c4fe6d88cc6e2c7e4a408a3f16452c7`  | 
| EFA 1.14.0 |  **MD5: **`40805e7fd842c36ececb9fd7f921b1ae` **SHA256: **`662d62c12de85116df33780d40e0533ef7dad92709f4f613907475a7a1b60a97`  | 
| EFA 1.13.0 |  **MD5: **`c91d16556f4fd53becadbb345828221e` **SHA256: **`ad6705eb23a3fce44af3afc0f7643091595653a723ad0374084f4f2b715192e1`  | 
| EFA 1.12.3 |  **MD5: **`818aee81f097918cfaebd724eddea678` **SHA256: **`2c225321824788b8ca3fbc118207b944cdb096b847e1e0d1d853ef2f0d727172`  | 
| EFA 1.12.2 |  **MD5: **`956bb1fc5ae0d6f0f87d2e481d49fccf` **SHA256: **`083a868a2c212a5a4fcf3e4d732b685ce39cceb3ca7e5d50d0b74e7788d06259`  | 
| EFA 1.12.1 |  **MD5: **`f5bfe52779df435188b0a2874d0633ea` **SHA256: **`5665795c2b4f09d5f3f767506d4d4c429695b36d4a17e5758b27f033aee58900`  | 
| EFA 1.12.0 |  **MD5: **`d6c6b49fafb39b770297e1cc44fe68a6` **SHA256: **`28256c57e9ecc0b0778b41c1f777a9982b4e8eae782343dfe1246079933dca59`  | 
| EFA 1.11.2 |  **MD5: **`2376cf18d1353a4551e35c33d269c404` **SHA256: **`a25786f98a3628f7f54f7f74ee2b39bc6734ea9374720507d37d3e8bf8ee1371`  | 
| EFA 1.11.1 |  **MD5: **`026b0d9a0a48780cc7406bd51997b1c0` **SHA256: **`6cb04baf5ffc58ddf319e956b5461289199c8dd805fe216f8f9ab8d102f6d02a`  | 
| EFA 1.11.0 |  **MD5: **`7d9058e010ad65bf2e14259214a36949` **SHA256: **`7891f6d45ae33e822189511c4ea1d14c9d54d000f6696f97be54e915ce2c9dfa`  | 
| EFA 1.10.1 |  **MD5: **`78521d3d668be22976f46c6fecc7b730` **SHA256: **`61564582de7320b21de319f532c3a677d26cc46785378eb3b95c636506b9bcb4`  | 
| EFA 1.10.0 |  **MD5: **`46f73f5a7afe41b4bb918c81888fefa9` **SHA256: **`136612f96f2a085a7d98296da0afb6fa807b38142e2fc0c548fa986c41186282`  | 
| EFA 1.9.5 |  **MD5: **`95edb8a209c18ba8d250409846eb6ef4` **SHA256: **`a4343308d7ea4dc943ccc21bcebed913e8868e59bfb2ac93599c61a7c87d7d25`  | 
| 1.9.4 de EFA |  **MD5: **`f26dd5c350422c1a985e35947fa5aa28` **SHA256: **`1009b5182693490d908ef0ed2c1dd4f813cc310a5d2062ce9619c4c12b5a7f14`  | 
| 1.9.3 de EFA |  **MD5: **`95755765a097802d3e6d5018d1a5d3d6` **SHA256: **`46ce732d6f3fcc9edf6a6e9f9df0ad136054328e24675567f7029edab90c68f1`  | 
| 1.8.4 de EFA |  **MD5: **`85d594c41e831afc6c9305263140457e` **SHA256: **`0d974655a09b213d7859e658965e56dc4f23a0eee2dc44bb41b6d039cc5bab45`  | 

# Notas de la versión de Elastic Fabric Adapter
<a name="efa-changelog"></a>

En la siguiente tabla, se describe el historial de versiones y el registro de cambios del software Elastic Fabric Adapter.


| Versión | Cambios | Fecha de lanzamiento de la nueva versión | 
| --- | --- | --- | 
| 1.47.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 29 de enero de 2026 | 
| 1.46.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 12 de diciembre de 2025 | 
| 1.45.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 26 de noviembre de 2025 | 
| 1.45.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 17 de noviembre de 2025 | 
| 1.44.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 29 de octubre de 2025 | 
| 1.43.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 01 de octubre de 2025 | 
| 1.43.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 15 de agosto de 2025 | 
| 1.43.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 31 de julio de 2025 | 
| 1.43.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 25 de julio de 2025 | 
| 1.42.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 6 de junio de 2025 | 
| 1.41.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 16 de mayo de 2025 | 
| 1.40.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2 de mayo de 2025 | 
| 1.39.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 16 de abril de 2025 | 
| 1.38.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 3 de marzo de 2025 | 
| 1.38.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 8 de enero de 2025 | 
| 1.37.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 18 de noviembre de 2024 | 
| 1.36.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 7 de noviembre de 2024 | 
| 1.35.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 14 de octubre de 2024 | 
| 1.34.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 6 de agosto de 2024 | 
| 1.33.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 20 de junio de 2024 | 
| 1.32.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 18 de abril de 2024 | 
| 1.31.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | 7 de marzo de 2024 | 
| 1.30.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2023 | 
| 1.29.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2023 | 
| 1.29.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Noviembre de 2023 | 
| 1.28.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2023 | 
| 1.27.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2023 | 
| 1.26.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2023 | 
| 1.26.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2023 | 
| 1.25.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2023 | 
| 1.25.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2023 | 
| 1.24.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2023 | 
| 1.24.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Junio de 2023 | 
| 1.23.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Junio de 2023 | 
| 1.23.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mayo de 2023 | 
| 1.22.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Marzo de 2023 | 
| 1.22.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Febrero de 2023 | 
| 1.21.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2022 | 
| 1.20.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Noviembre de 2022 | 
| 1.19.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2022 | 
| 1.18.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Agosto de 2022 | 
| 1.17.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Agosto de 2022 | 
| 1.17.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2022 | 
| 1.17.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2022 | 
| 1.17.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2022 | 
| 1.16.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Junio de 2022 | 
| 1.15.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mayo de 2022 | 
| 1.15.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Marzo de 2022 | 
| 1.15.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Febrero de 2022 | 
| 1.14.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2021 | 
| 1.14.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2021 | 
| 1.13.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Agosto de 2021 | 
| 1.12.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2021 | 
| 1.12.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Junio de 2021 | 
| 1.12.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mayo de 2021 | 
| 1.12.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Mayo de 2021 | 
| 1.11.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Febrero de 2021 | 
| 1.11.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2020 | 
| 1.11.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2020 | 
| 1.10.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Noviembre de 2020 | 
| 1.10.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2020 | 
| 1.9.5 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2020 | 
| 1.9.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2020 | 
| 1.9.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Junio de 2020 | 
| 1.8.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Abril de 2020 | 
| 1.8.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Febrero de 2020 | 
| 1.8.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Enero de 2020 | 
| 1.8.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Enero de 2020 | 
| 1.8.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2019 | 
| 1.7.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Diciembre de 2019 | 
| 1.7.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Noviembre de 2019 | 
| 1.6.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2019 | 
| 1.6.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Octubre de 2019 | 
| 1.5.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2019 | 
| 1.5.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Septiembre de 2019 | 
| 1.5.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Agosto de 2019 | 
| 1.5.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Agosto de 2019 | 
| 1.4.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2019 | 
| 1.4.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/efa-changelog.html)  | Julio de 2019 | 