Acceso de alta velocidad a servicios de inferencia por interconexión de las VPC
Contexto
Al acceder a un servicio en tiempo real, es posible que necesite:
- Alto throughput y baja latencia
- Solicitudes de TCP o de RPC
Para cumplir con estos requisitos, ModelArts permite el acceso de alta velocidad por la interconexión de las VPC.
En el acceso de alta velocidad por la interconexión de las VPC, sus solicitudes de servicio se envían directamente a las instancias por la interconexión de las VPC, pero no con la plataforma de inferencia. Esto acelera el acceso al servicio.
Las siguientes funciones disponibles con la plataforma de inferencia no estarán disponibles si utiliza el acceso de alta velocidad:
- Autenticación
- Distribución del tráfico por configuración
- Equilibrio de carga
- Alarma, monitoreo y estadísticas
Preparaciones
Despliegue un servicio en tiempo real en un grupo de recursos dedicado y asegúrese de que el servicio se está ejecutando.
- Para obtener más detalles sobre cómo desplegar servicios en grupos de recursos dedicados de nueva versión, consulte Actualizaciones amplias de funciones de gestión de grupos de recursos de ModelArts.
- Solo los servicios desplegados en un grupo de recursos dedicado soportan acceso de alta velocidad por la interconexión de las VPC.
- El acceso de alta velocidad por interconexión de las VPC solo está disponible para los servicios en tiempo real.
- Debido al control del tráfico, existe un límite en la frecuencia con la que se puede obtener la dirección IP y el número de puerto de un servicio en tiempo real. La cantidad de llamadas de cada cuenta de tenant no puede superar las 2000 por minuto y la de cada cuenta de usuario de IAM no puede superar las 20 por minuto.
- El acceso de alta velocidad por interconexión de VPC solo está disponible para los servicios desplegados con las aplicaciones de IA importadas desde las imágenes personalizadas.
Procedimiento
Para habilitar el acceso de alta velocidad a un servicio en tiempo real por interconexión de las VPC, realice las siguientes operaciones:
- Interconecte el grupo de recursos dedicados a la VPC.
- Cree un ECS en la VPC.
- Obtenga la dirección IP y el número de puerto del servicio en tiempo real.
- Acceda al servicio con la dirección IP y el número de puerto.
- Interconecte el grupo de recursos dedicados a la VPC.
Inicie sesión en la consola de gestión de ModelArts, seleccione Dedicated Resource Pools > Elastic Cluster, localice el grupo de recursos dedicado utilizado para el despliegue de servicio y haga clic en su nombre/ID para ir a la página de detalles del grupo de recursos. Obtenga la configuración de red. Vuelva a la lista del grupo de recursos dedicados, haga clic en la pestaña Network, localice la red asociada al grupo de recursos dedicados e interconéctela con la VPC. Después de acceder a la VPC, esta VPC aparecerá en las páginas de detalles de lista de redes y del grupo de recursos. Haga clic en la VPC para ir a la página de detalles.
Figura 2 Localización del grupo de recursos dedicados de destino
Figura 3 Obtención de la configuración de red
Figura 4 Interconexión de las VPC
- Cree un ECS en la VPC.
Inicie sesión en la consola de gestión de ECS y haga clic en Buy ECS en la esquina superior derecha. En la página Buy ECS, configure los ajustes básicos y haga clic en Next: Configure Network. En la página Configure Network, seleccione la VPC conectada en 1, configure otros parámetros, confirme los ajustes y haga clic en Submit. Cuando el estado del ECS cambia a Running, se crea el ECS. Haga clic en su nombre o ID para ir a la página de detalles del servidor y ver la configuración de VPC.
Figura 5 Selección de una VPC al comprar un ECS
- Obtenga la dirección IP y el número de puerto del servicio en tiempo real.
Se puede utilizar el software de GUI, por ejemplo, con Postman puede obtener la dirección IP y el número de puerto. De forma alternativa, inicie sesión en el ECS, cree un entorno de Python y ejecute el código para obtener la dirección IP del servicio y el número de puerto.
API:
GET /v1/{project_id}/services/{service_id}/predict/endpoints?type=host_endpoints
- Método 1: Obtenga la dirección IP y el número de puerto utilizando el software de GUI.
Figura 6 Ejemplo de la respuesta
- Método 2: Obtenga la dirección IP y el número de puerto usando Python.
Es necesario modificar los siguientes parámetros en el código Python que aparece a continuación:
- project_id: Su ID de proyecto. Para obtenerlo, consulte Obtención de un ID y nombre de proyecto.
- service_id: ID del servicio, que puede consultarse en la página de detalles del servicio.
- REGION_ENDPOINT: servicio de punto de conexión. Para obtenerlo, consulte Punto de conexión.
def get_app_info(project_id, service_id): list_host_endpoints_url = "{}/v1/{}/services/{}/predict/endpoints?type=host_endpoints" url = list_host_endpoints_url.format(REGION_ENDPOINT, project_id, service_id) headers = {'X-Auth-Token': X_Auth_Token} response = requests.get(url, headers=headers) print(response.content)
- Método 1: Obtenga la dirección IP y el número de puerto utilizando el software de GUI.
- Acceda al servicio con la dirección IP y el número de puerto.
Inicie sesión en el ECS y acceda al servicio en tiempo real ejecutando comandos de Linux o creando un entorno de Python y ejecutando código de Python. Obtenga los valores de schema, ip y port de 3.
- Ejecute el siguiente comando para acceder al servicio en tiempo real:
curl --location --request POST 'http://192.168.205.58:31997' \ --header 'Content-Type: application/json' \ --data-raw '{"a":"a"}'
Figura 7 Acceso a un servicio en tiempo real
- Cree un entorno de Python y ejecute el código de Python para acceder al servicio en tiempo real.
def vpc_infer(schema, ip, port, body): infer_url = "{}://{}:{}" url = infer_url.format(schema, ip, port) response = requests.post(url, data=body) print(response.content)
El acceso de alta velocidad no admite el balanceo de carga. Debe personalizar las políticas de equilibrio de carga cuando desplegar varias instancias.
- Ejecute el siguiente comando para acceder al servicio en tiempo real: