Pubblica modelli aperti utilizzando il contenitore premium Hex-LLM su Cloud TPU

Il modello LLM (Hex-LLM), un modello linguistico di grandi dimensioni (LLM) ad alta efficienza (LLM) utilizzato con XLA, il framework di gestione LLM Vertex AI progettato e ottimizzato per l'hardware Cloud TPU. Hex-LLM combina tecnologie di gestione LLM come batch continuo e PagedAttention con Ottimizzazioni di Vertex AI su misura per XLA e Cloud TPU. Si tratta di un modello LLM ad alta efficienza e a basso costo che viene eseguito su Cloud TPU per i modelli open source.

L'LLM esadecimale è disponibile in Model Garden tramite modello parco giochi, deployment con un solo clic e blocco note.

Funzionalità

Hex-LLM si basa su progetti open source con le ottimizzazioni di Google per XLA e Cloud TPU. Hex-LLM raggiunge una velocità effettiva elevata e una bassa latenza quando pubblica LLM utilizzati di frequente.

Hex-LLM include le seguenti ottimizzazioni:

  • Algoritmo di raggruppamento continuo basato su token per contribuire a garantire che i modelli utilizzino completamente l'hardware con un numero elevato di richieste simultanee.
  • Una riscrittura completa dei kernel di attenzione ottimizzati per XLA.
  • Strategie di parallelismo dei dati e parallelismo dei tensori flessibili e componibili con metodi di suddivisione dei pesi altamente ottimizzati per eseguire in modo efficiente i modelli linguistici di grandi dimensioni su più chip Cloud TPU.

Hex-LLM supporta una vasta gamma di LLM densi e sparsi:

  • Gemma 2B e 7B
  • Gemma 2 9B e 27B
  • Llama 2 7B, 13B e 70B
  • Llama 3 8B e 70B
  • Llama 3.1 8B e 70B
  • Llama 3.2 1B e 3B
  • Llama Guard 3 1B e 8B
  • Mistral 7B
  • Mixtral 8x7B e 8x22B
  • Phi-3 mini e medium

L'LLM esadecimale offre anche una serie di funzionalità, ad esempio:

  • L'LLM esadecimale è incluso in un unico container. Hex-LLM pacchettizza il server API, il motore di inferenza e i modelli supportati in un'unica immagine Docker da eseguire.
  • Compatibile con il formato dei modelli Hugging Face. L'LLM esadecimale può caricare un modello Hugging Face dal disco locale, Face Hub e un bucket Cloud Storage.
  • Quantizzazione utilizzando bitsandbytes e AWQ
  • Caricamento dinamico di LoRa. Hex-LLM è in grado di caricare i pesi LoRA leggendo l'argomento della richiesta durante la pubblicazione.

Inizia a utilizzare Model Garden

Il contenitore di servizio Hex-LLM Cloud TPU è integrato in Model Garden. Puoi accedere a questa tecnologia di pubblicazione tramite il laboratorio, il deployment con un solo clic e gli esempi di notebook Colab Enterprise per una serie di modelli.

Usa Playground

Il playground di Model Garden è un endpoint Vertex AI pre-implementato che è raggiungibile inviando richieste nella scheda del modello.

  1. Inserisci un prompt e, facoltativamente, includi gli argomenti per la richiesta.

  2. Fai clic su INVIA per ricevere rapidamente la risposta del modello.

Prova con Gemma.

Usa il deployment con un solo clic

Puoi eseguire il deployment di un endpoint Vertex AI personalizzato con Hex-LLM utilizzando una scheda del modello.

  1. Vai alla pagina della scheda del modello. e fai clic su Esegui il deployment.

  2. Per la variante del modello che vuoi utilizzare, seleziona il tipo di macchina Cloud TPU v5e per il deployment.

  3. Fai clic su Esegui il deployment in basso per avviare la procedura di deployment. Ricevi due notifiche via email; una quando il modello viene caricato e un'altra quando è pronto.

Utilizzare il blocco note di Colab Enterprise

Per flessibilità e personalizzazione, puoi utilizzare Colab Enterprise di blocchi note per eseguire il deployment di un endpoint Vertex AI con Hex-LLM utilizzando l'SDK Vertex AI per Python.

  1. Vai alla pagina della scheda del modello e fai clic su Apri notebook.

  2. Seleziona il notebook Vertex Serving. Il blocco note è aperto in Colab Enterprise

  3. Esegui il blocco note per eseguire il deployment di un modello utilizzando Hex-LLM, quindi invia richieste di previsione all'endpoint. Lo snippet di codice per il deployment come segue:

hexllm_args = [
    f"--model=google/gemma-2-9b-it",
    f"--tensor_parallel_size=4",
    f"--hbm_utilization_factor=0.8",
    f"--max_running_seqs=512",
]
hexllm_envs = {
    "PJRT_DEVICE": "TPU",
    "MODEL_ID": "google/gemma-2-9b-it",
    "DEPLOY_SOURCE": "notebook",
}
model = aiplatform.Model.upload(
    display_name="gemma-2-9b-it",
    serving_container_image_uri=HEXLLM_DOCKER_URI,
    serving_container_command=[
        "python", "-m", "hex_llm.server.api_server"
    ],
    serving_container_args=hexllm_args,
    serving_container_ports=[7080],
    serving_container_predict_route="/generate",
    serving_container_health_route="/ping",
    serving_container_environment_variables=hexllm_envs,
    serving_container_shared_memory_size_mb=(16 * 1024),
    serving_container_deployment_timeout=7200,
)

endpoint = aiplatform.Endpoint.create(display_name="gemma-2-9b-it-endpoint")
model.deploy(
    endpoint=endpoint,
    machine_type="ct5lp-hightpu-4t",
    deploy_request_timeout=1800,
    service_account="<your-service-account>",
    min_replica_count=1,
    max_replica_count=1,
)

Configura il server

Puoi impostare i seguenti argomenti per l'avvio del server Hex-LLM:

  • --model: il modello da caricare. Puoi specificare un ID modello Hugging Face, un percorso assoluto locale o un percorso del bucket Cloud Storage.
  • --tokenizer: il tokenizzatore da caricare. Può essere l'ID modello di Hugging Face, un un percorso assoluto locale o un percorso del bucket Cloud Storage. Il valore predefinito è uguale a quello di --model.
  • --enable_jit: indica se attivare la modalità JIT. Il valore predefinito è True.
  • --data_parallel_size: il numero di repliche parallele di dati. Il valore predefinito è 1.
  • --tensor_parallel_size: il numero di repliche parallele di tensori. La il valore predefinito è 1.
  • --num_hosts: il numero di VM TPU da utilizzare per i job di gestione multi-host. Consulta la sezione Tipi di macchine TPU per le impostazioni di diverse topologie. Il valore predefinito è 1.
  • --worker_distributed_method: il metodo distribuito per avviare il worker. Utilizza mp per il modulo multiprocessing o ray per la libreria Ray. Il valore predefinito è mp.
  • --max_model_len: la lunghezza massima del contesto che il server può elaborare. Il valore predefinito viene letto dai file di configurazione del modello.
  • --max_running_seqs: il numero massimo di richieste che il server può elaborare contemporaneamente. Più grande è questo argomento, maggiore è la velocità effettiva del server che potrebbe ottenere, ma con potenziali effetti negativi sulla latenza. Il valore predefinito è 256.
  • --hbm_utilization_factor: la percentuale di HBM Cloud TPU gratuita che può essere allocata per la cache KV dopo il caricamento dei pesi del modello. L'impostazione di questo argomento su un valore inferiore può impedire efficacemente la mancanza di memoria HBM di Cloud TPU. Il valore predefinito è 0.9.
  • --enable_lora: indica se attivare la modalità di caricamento LoRA. Il valore predefinito è False.
  • --max_lora_rank: il ranking LoRA massimo supportato per gli adattatori LoRA, definito nelle richieste. Il valore predefinito è 16.
  • --seed: il seed per l'inizializzazione di tutti i generatori di numeri casuali. Modifica questo argomento può influire sull'output generato per lo stesso prompt. La il valore predefinito è 0.
  • --prefill_len_padding: aggiunge spazi alla lunghezza della sequenza in modo che sia un multiplo di questo valore. L'aumento di questo valore riduce i tempi di ricompilazione del modello, ma riduce le prestazioni di inferenza. Il valore predefinito è 512.
  • --decode_seqs_padding: completa il numero di sequenze in un batch con un moltiplo di questo valore durante la decodifica. Aumentando questo valore si riduce tempi di ricompilazione, ma riduce le prestazioni di inferenza. Il valore predefinito è 8.
  • --decode_blocks_padding: padroneggia il numero di blocchi di memoria utilizzati per un KV-cache della sequenza a un multiplo di questo valore durante la decodifica. L'aumento di questo valore riduce i tempi di ricompilamento del modello, ma riduce le prestazioni dell'inferenza. Il valore predefinito è 128.

Puoi anche configurare il server utilizzando le seguenti variabili di ambiente:

  • HEX_LLM_LOG_LEVEL: controlla la quantità di informazioni generate durante la registrazione. Impostalo su uno dei livelli di logging Python standard definiti nel modulo di logging.
  • HEX_LLM_VERBOSE_LOG: attiva o disattiva l'output del logging dettagliato. I valori consentiti sono true o false. Il valore predefinito è false.

Richiedi una quota Cloud TPU

In Model Garden, la quota predefinita è di 4 chip Cloud TPU v5e nella regione us-west1. Queste quote si applicano ai deployment con un solo clic e ai deployment dei blocchi note Colab Enterprise. Per richiedere quote aggiuntive, consulta Richiedi un di archiviazione.