En este instructivo, se explica cómo implementar el modelo Meta-Llama-3.1-8B en la plataforma de agentes de Gemini Enterprise. Aprenderás a implementar extremos y a optimizar los modelos para tus necesidades específicas. Si tienes cargas de trabajo tolerantes a errores, puedes optimizar los costos con las VMs Spot. Si deseas garantizar la disponibilidad, usa las reservas de Compute Engine. Aprenderás a implementar extremos que utilizan lo siguiente:
- VMs Spot: Usa instancias aprovisionadas de forma puntual para ahorrar costos de forma significativa.
- Reservas: Garantizan la disponibilidad de recursos para un rendimiento predecible, en especial para las cargas de trabajo de producción. En este instructivo, se muestra cómo usar reservas automáticas (
ANY_RESERVATION) y específicas (SPECIFIC_RESERVATION).
Para obtener más información, consulta VMs Spot o Reservas de recursos de Compute Engine.
Requisitos previos
Antes de comenzar, completa los siguientes requisitos previos:
- Un proyecto Cloud de Confiance by S3NS con la facturación habilitada
- Las APIs de Gemini Enterprise Agent Platform y Compute Engine están habilitadas.
- Cuota suficiente para el tipo de máquina y el acelerador que pretendes usar, como las GPUs NVIDIA L4 Para verificar tus cuotas, consulta Cuotas y límites del sistema en la consola de Cloud de Confiance .
- Una cuenta de Hugging Face y un token de acceso de usuario con acceso de lectura
- Si usas reservas compartidas, otorga permisos de IAM entre proyectos. Todos esos permisos se tratan en el notebook.
Implementa en VMs Spot
En las siguientes secciones, se explica el proceso para configurar tu proyecto Cloud de Confiance by S3NS , configurar la autenticación de Hugging Face, implementar el modelo Llama-3.1 con VMs Spot o reservas, y probar la implementación.
1. Configura tu proyecto de Cloud de Confiance by S3NS y la reserva compartida
Abre el notebook de Colab Enterprise.
En la primera sección, configura las variables PROJECT_ID, SHARED_PROJECT_ID (si corresponde), BUCKET_URI y REGION en el notebook de Colab.
El notebook otorga el rol compute.viewer a la cuenta de servicio de ambos proyectos.
Si planeas usar una reserva que se creó en un proyecto diferente dentro de la misma organización, asegúrate de otorgar el rol compute.viewer a la P4SA (cuenta de servicio principal) de ambos proyectos. El código del notebook automatizará este proceso, pero asegúrate de que SHARED_PROJECT_ID esté configurado correctamente. Este permiso entre proyectos permite que el extremo de Gemini Enterprise Agent Platform en tu proyecto principal vea y use la capacidad de reserva en el proyecto compartido.
2. Configura la autenticación de Hugging Face
Para descargar el modelo Llama-3.1, debes proporcionar tu token de acceso de usuario de Hugging Face en la variable HF_TOKEN dentro del notebook de Colab. Si no proporcionas uno, recibirás el siguiente error: Cannot access gated repository for URL.
Figura 1: Configuración del token de acceso de Hugging Face
3. Implementa con una VM Spot
Para implementar el modelo de Llama en una VM Spot, navega a la sección "Implementación del extremo de Gemini Enterprise Agent Platform en la VM Spot" en el notebook de Colab y configura is_spot=True.
base_model_name = "Meta-Llama-3.1-8B"
hf_model_id = "meta-llama/" + base_model_name
if "8b" in base_model_name.lower():
accelerator_type = "NVIDIA_L4"
machine_type = "g2-standard-12"
accelerator_count = 1
max_loras = 5
else:
raise ValueError(
f"Recommended GPU setting not found for: {accelerator_type} and {base_model_name}."
)
common_util.check_quota(
project_id=PROJECT_ID,
region=REGION,
accelerator_type=accelerator_type,
accelerator_count=accelerator_count,
is_for_training=False,
)
gpu_memory_utilization = 0.95
max_model_len = 8192
models["vllm_gpu_spotvm"], endpoints["vllm_gpu_spotvm"] = deploy_model_vllm(
model_name=common_util.get_job_name_with_datetime(prefix="llama3_1-serve-spotvm"),
model_id=hf_model_id,
base_model_id=hf_model_id,
service_account=SERVICE_ACCOUNT,
machine_type=machine_type,
accelerator_type=accelerator_type,
accelerator_count=accelerator_count,
gpu_memory_utilization=gpu_memory_utilization,
max_model_len=max_model_len,
max_loras=max_loras,
enforce_eager=True,
enable_lora=True,
use_dedicated_endpoint=False,
model_type="llama3.1",
is_spot=True,
)
Implementa en instancias de reserva compartidas
En las siguientes secciones, se te guiará por el proceso de creación de una reserva compartida, la configuración de los parámetros de configuración de la reserva, la implementación del modelo Llama 3.1 con ANY_RESERVATION o SPECIFIC_RESERVATION y la prueba de la implementación.
1. Crear una reserva compartida
Para configurar tus reservas, ve a la sección "Set Up Reservations for Gemini Enterprise Agent Platform Predictions" del notebook. Establece las variables requeridas para la reserva, como RES_ZONE, RESERVATION_NAME, RES_MACHINE_TYPE, RES_ACCELERATOR_TYPE y RES_ACCELERATOR_COUNT.
Debes establecer RES_ZONE como {REGION}-{availability_zone}.
RES_ZONE = "a"
RES_ZONE = f"{REGION}-{RES_ZONE}"
RESERVATION_NAME = "shared-reservation-1"
RESERVATION_NAME = f"{PROJECT_ID}-{RESERVATION_NAME}"
RES_MACHINE_TYPE = "g2-standard-12"
RES_ACCELERATOR_TYPE = "nvidia-l4"
RES_ACCELERATOR_COUNT = 1
rev_names.append(RESERVATION_NAME)
create_reservation(
res_project_id=PROJECT_ID,
res_zone=RES_ZONE,
res_name=RESERVATION_NAME,
res_machine_type=RES_MACHINE_TYPE,
res_accelerator_type=RES_ACCELERATOR_TYPE,
res_accelerator_count=RES_ACCELERATOR_COUNT,
shared_project_id=SHARED_PROJECT_ID,
)
2. Comparte tus reservas
Existen dos tipos de reservas: las de un solo proyecto (predeterminadas) y las compartidas. Las reservas de un solo proyecto solo pueden usarlas las VMs que se encuentran en el mismo proyecto que la reserva. Por otro lado, las reservas compartidas pueden ser utilizadas por las VMs del proyecto en el que se encuentra la reserva, así como por las VMs de cualquier otro proyecto con el que se haya compartido la reserva. El uso de reservas compartidas puede mejorar la utilización de tus recursos reservados y reducir la cantidad total de reservas que necesitas crear y administrar. En este instructivo, nos enfocaremos en las reservas compartidas. Para obtener más información, consulta Cómo funcionan las reservas compartidas.
Antes de continuar, asegúrate de "Compartir con otros servicios de Google" desde la consola de Cloud de Confiance by S3NS , como se muestra en la figura:
Figura 2: Comparte la reserva con otros servicios de Google
3. Implementa con ANY_RESERVATION
Para implementar el extremo con ANY_RESERVATION, ve a la sección "Implementa el extremo de Llama-3.1 con ANY_RESERVATION" del notebook. Especifica la configuración de implementación y, luego, establece reservation_affinity_type="ANY_RESERVATION". Luego, ejecuta la celda para implementar el extremo.
hf_model_id = "meta-llama/Meta-Llama-3.1-8B"
models["vllm_gpu_any_reserve"], endpoints["vllm_gpu_any_reserve"] = deploy_model_vllm(
model_name=common_util.get_job_name_with_datetime(
prefix=f"llama3_1-serve-any-{RESERVATION_NAME}"
),
model_id=hf_model_id,
base_model_id=hf_model_id,
service_account=SERVICE_ACCOUNT,
machine_type=MACHINE_TYPE,
accelerator_type=ACCELERATOR_TYPE,
accelerator_count=ACCELERATOR_COUNT,
model_type="llama3.1",
reservation_affinity_type="ANY_RESERVATION",
)
4. Prueba el extremo ANY_RESERVATION
Una vez que implementes tu endpoint, asegúrate de probar algunas instrucciones para garantizar que se haya implementado correctamente.
5. Implementa con SPECIFIC_RESERVATION
Para implementar el extremo con SPECIFIC_RESERVATION, ve a la sección "Implementa el extremo de Llama-3.1 con SPECIFIC_RESERVATION" del notebook. Especifica los siguientes parámetros: reservation_name, reservation_affinity_type="SPECIFIC_RESERVATION", reservation_project y reservation_zone. Luego, ejecuta la celda para implementar el extremo.
hf_model_id = "meta-llama/Meta-Llama-3.1-8B"
MACHINE_TYPE = "g2-standard-12"
ACCELERATOR_TYPE = "NVIDIA_L4"
ACCELERATOR_COUNT = 1
(
models["vllm_gpu_specific_reserve"],
endpoints["vllm_gpu_specific_reserve"],
) = deploy_model_vllm(
model_name=common_util.get_job_name_with_datetime(
prefix=f"llama3_1-serve-specific-{RESERVATION_NAME}"
),
model_id=hf_model_id,
base_model_id=hf_model_id,
service_account=SERVICE_ACCOUNT,
machine_type=MACHINE_TYPE,
accelerator_type=ACCELERATOR_TYPE,
accelerator_count=ACCELERATOR_COUNT,
model_type="llama3.1",
reservation_name=RESERVATION_NAME,
reservation_affinity_type="SPECIFIC_RESERVATION",
reservation_project=PROJECT_ID,
reservation_zone=RES_ZONE,
)
6. Prueba el extremo SPECIFIC_RESERVATION
Una vez que se implemente tu extremo, verifica que la reserva se use en la predicción en línea de Gemini Enterprise Agent Platform y asegúrate de probar algunas instrucciones para garantizar que se implemente correctamente.
Figura 3: Comprueba que la predicción en línea de Vertex usa la reserva
7. Realiza una limpieza
Para evitar cargos continuos, borra los modelos, los extremos y las reservas que creaste durante este instructivo. El notebook de Colab proporciona código en la sección "Limpieza" para automatizar este proceso.
Soluciona problemas
- Errores de token de Hugging Face: Verifica que tu token de Hugging Face tenga permisos de
ready que esté configurado correctamente en el notebook. - Errores de cuota: Verifica que tengas suficiente cuota de GPU en la región en la que realizas la implementación. Solicita un aumento de cuota si es necesario.
- Conflictos de reserva: Asegúrate de que el tipo de máquina y la configuración del acelerador de la implementación del extremo coincidan con la configuración de la reserva. Asegúrate de que las reservas estén habilitadas para compartirse con los servicios de Google.
Próximos pasos
- Explora las diferentes variantes del modelo Llama 3.
- Obtén más información sobre las reservas con esta Descripción general de las reservas de Compute Engine.
- Obtén más información sobre las VMs Spot en esta Descripción general de las VMs Spot.