Spot-VMs oder Reservierungen verwenden, um einen Gemini Enterprise Agent Platform-Llama-3.1-Endpunkt auf Cloud-GPUs bereitzustellen

In dieser Anleitung erfahren Sie, wie Sie das Modell Meta-Llama-3.1-8B auf der Gemini Enterprise Agent Platform bereitstellen. Sie lernen, wie Sie Endpunkte bereitstellen und für Ihre spezifischen Anforderungen optimieren. Wenn Sie fehlertolerante Arbeitslasten haben, können Sie die Kosten optimieren, indem Sie Spot-VMs verwenden. Wenn Sie die Verfügbarkeit sicherstellen möchten, verwenden Sie Compute Engine-Reservierungen. Sie erfahren, wie Sie Endpunkte bereitstellen, die Folgendes verwenden:

  • Spot-VMs:Verwenden Sie Spot-bereitgestellte Instanzen, um erhebliche Kosten zu sparen.
  • Reservierungen:Garantieren Sie die Ressourcenverfügbarkeit für eine vorhersehbare Leistung, insbesondere für Produktionsarbeitslasten. In dieser Anleitung wird die Verwendung von automatischen (ANY_RESERVATION) und spezifischen (SPECIFIC_RESERVATION) Reservierungen veranschaulicht.

Weitere Informationen finden Sie unter Spot-VMs oder Reservierungen von Compute Engine-Ressourcen.

Vorbereitung

Bevor Sie beginnen, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Ein Cloud de Confiance by S3NS Projekt mit aktivierter Abrechnung.
  • Die Gemini Enterprise Agent Platform und die Compute Engine APIs sind aktiviert.
  • Ausreichendes Kontingent für den Maschinentyp und den Beschleuniger, den Sie verwenden möchten, z. B. NVIDIA L4-GPUs. Informationen zum Prüfen Ihrer Kontingente finden Sie in der Cloud de Confiance Console unter Kontingente und Systemlimits.
  • Ein Hugging Face-Konto und ein Nutzerzugriffstoken mit Leseberechtigung.
  • Wenn Sie freigegebene Reservierungen verwenden, gewähren Sie IAM-Berechtigungen zwischen Projekten. Diese Berechtigungen werden alle im Notebook behandelt.

Auf Spot-VMs bereitstellen

In den folgenden Abschnitten wird beschrieben, wie Sie Ihr Cloud de Confiance by S3NS Projekt einrichten, die Hugging Face-Authentifizierung konfigurieren, das Llama-3.1-Modell mit Spot-VMs oder Reservierungen bereitstellen und die Bereitstellung testen.

1. Projekt und freigegebene Reservierung einrichten Cloud de Confiance by S3NS

Öffnen Sie das Colab Enterprise-Notebook.

Legen Sie im ersten Abschnitt die Variablen PROJECT_ID, SHARED_PROJECT_ID (falls zutreffend), BUCKET_URI und REGION im Colab-Notebook fest.

Das Notebook gewährt die Rolle „compute.viewer“ für das Dienstkonto beider Projekte.

Wenn Sie eine Reservierung verwenden möchten, die in einem anderen Projekt innerhalb derselben Organisation erstellt wurde, gewähren Sie die Rolle compute.viewer für das P4SA (Principal Service Account) beider Projekte. Der Notebook-Code automatisiert diesen Vorgang. Achten Sie jedoch darauf, dass SHARED_PROJECT_ID korrekt festgelegt ist. Diese projektübergreifende Berechtigung ermöglicht es dem Gemini Enterprise Agent Platform-Endpunkt in Ihrem primären Projekt, die Reservierungskapazität im freigegebenen Projekt zu sehen und zu verwenden.

2. Hugging Face-Authentifizierung einrichten

Um das Llama-3.1-Modell herunterzuladen, müssen Sie Ihr Hugging Face-Nutzerzugriffstoken in der Variablen HF_TOKEN im Colab-Notebook angeben. Wenn Sie kein Token angeben, wird der folgende Fehler angezeigt: Cannot access gated repository for URL.

Hugging Face-Zugriffstoken-Einstellungen Abbildung 1: Einstellungen für das Hugging Face-Zugriffstoken

3. Mit Spot-VM bereitstellen

Wenn Sie das Llama-Modell auf einer Spot-VM bereitstellen möchten, rufen Sie im Colab-Notebook den Abschnitt „Spot VM Gemini Enterprise Agent Platform Endpoint Deployment“ auf und legen Sie is_spot=True fest.

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,
)

Auf Instanzen mit freigegebener Reservierung bereitstellen

In den folgenden Abschnitten wird beschrieben, wie Sie eine freigegebene Reservierung erstellen, die Reservierungseinstellungen konfigurieren, das Llama-3.1-Modell mit ANY_RESERVATION oder SPECIFIC_RESERVATION bereitstellen und die Bereitstellung testen.

1. Freigegebene Reservierung erstellen

Wenn Sie Ihre Reservierungen konfigurieren möchten, rufen Sie im Notebook den Abschnitt „Set Up Reservations for Gemini Enterprise Agent Platform Predictions“ auf. Legen Sie die erforderlichen Variablen für die Reservierung fest, z. B. RES_ZONE, RESERVATION_NAME, RES_MACHINE_TYPE, RES_ACCELERATOR_TYPE und RES_ACCELERATOR_COUNT.

Sie müssen RES_ZONE auf {REGION}-{availability_zone} festlegen.

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. Reservierungen freigeben

Es gibt zwei Arten von Reservierungen: Reservierungen für ein einzelnes Projekt (Standard) und freigegebene Reservierungen. Reservierungen für ein einzelnes Projekt können nur von VMs im selben Projekt wie die Reservierung selbst verwendet werden. Freigegebene Reservierungen können dagegen von VMs in dem Projekt verwendet werden, in dem sich die Reservierung befindet, sowie von VMs in jedem anderen Projekt, für das die Reservierung freigegeben wurde. Durch die Verwendung freigegebener Reservierungen kann die Auslastung Ihrer reservierten Ressourcen verbessert und die Gesamtzahl der Reservierungen reduziert werden, die Sie erstellen und verwalten müssen. In dieser Anleitung geht es um freigegebene Reservierungen. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.

Bevor Sie fortfahren, müssen Sie in der Cloud de Confiance by S3NS Console "Für andere Google-Dienste freigeben" auswählen, wie in der Abbildung gezeigt:

Reservierung für andere Google-Dienste freigeben Abbildung 2: Reservierung für andere Google-Dienste freigeben

3. Mit ANY_RESERVATION bereitstellen

Wenn Sie den Endpunkt mit ANY_RESERVATION bereitstellen möchten, rufen Sie im Notebook den Abschnitt „Deploy Llama-3.1 Endpoint with ANY_RESERVATION“ auf. Geben Sie die Bereitstellungseinstellungen an und legen Sie dann reservation_affinity_type="ANY_RESERVATION" fest. Führen Sie dann die Zelle aus, um den Endpunkt bereitzustellen.

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. ANY_RESERVATION-Endpunkt testen

Nachdem Sie den Endpunkt bereitgestellt haben, testen Sie einige Prompts, um sicherzustellen, dass er ordnungsgemäß bereitgestellt wurde.

5. Mit SPECIFIC_RESERVATION bereitstellen

Wenn Sie den Endpunkt mit SPECIFIC_RESERVATION bereitstellen möchten, rufen Sie im Notebook den Abschnitt „Deploy Llama-3.1 Endpoint with SPECIFIC_RESERVATION“ auf. Geben Sie die folgenden Parameter an: reservation_name, reservation_affinity_type="SPECIFIC_RESERVATION", reservation_project und reservation_zone. Führen Sie dann die Zelle aus, um den Endpunkt bereitzustellen.

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. SPECIFIC_RESERVATION-Endpunkt testen

Nachdem Sie den Endpunkt bereitgestellt haben, prüfen Sie, ob die Reservierung von der Gemini Enterprise Agent Platform-Onlinevorhersage verwendet wird. Testen Sie außerdem einige Prompts, um sicherzustellen, dass er ordnungsgemäß bereitgestellt wurde.

Prüfen, ob die Reservierung von Vertex-Onlinevorhersagen verwendet wird Abbildung 3: Prüfen, ob die Reservierung von der Vertex-Onlinevorhersage verwendet wird

7. Bereinigen

Löschen Sie die in dieser Anleitung erstellten Modelle, Endpunkte und Reservierungen, um laufende Kosten zu vermeiden. Das Colab-Notebook enthält im Abschnitt „Clean Up“ Code, mit dem Sie diesen Bereinigungsprozess automatisieren können.

Fehlerbehebung

  • Fehler beim Hugging Face-Token:Prüfen Sie noch einmal, ob Ihr Hugging Face-Token read-Berechtigungen hat und im Notebook korrekt festgelegt ist.
  • Kontingentfehler:Prüfen Sie, ob Sie in der Region, in der Sie die Bereitstellung vornehmen, ein ausreichendes GPU-Kontingent haben. Beantragen Sie bei Bedarf eine Kontingenterhöhung.
  • Reservierungskonflikte:Achten Sie darauf, dass die Konfiguration des Maschinentyps und des Beschleunigers Ihrer Endpunktbereitstellung mit den Einstellungen Ihrer Reservierung übereinstimmt. Achten Sie darauf, dass die Reservierungen für die Freigabe für Google-Dienste aktiviert sind.

Nächste Schritte