View a markdown version of this page

Esegui l'inferenza LLM in batch con vLLM - Deadline Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui l'inferenza LLM in batch con vLLM

Questo tutorial illustra come eseguire l'inferenza LLM (Large Language Model) ad alto rendimento su un file di prompt JSONL utilizzando il motore di inferenza vLLM attivo. GitHub Invii il pacchetto di job di inferenza batch vLLM GitHub con un file in cui ogni riga è un prompt, scegli un modello e il lavoro viene distribuito su una flotta di GPU. Ogni prompt riceve una risposta LLM e un passaggio aggregato racchiude tutto in un file JSONL più un visualizzatore HTML autonomo che puoi aprire in qualsiasi browser.

Il pacchetto gestisce carichi di lavoro offline e imbarazzantemente paralleli: generazione di contenuti, set di dati di valutazione, traduzione, estrazione e classificazione. Si adatta ovunque sia necessario un modello per rispondere a molti prompt indipendenti senza un server API attivo. Sotto il cofano, utilizza la funzionalità di suddivisione delle attività di Deadline Cloud per raggruppare i prompt in attività in batch, il che consente di ridurre il parallelismo rispetto al sovraccarico di pianificazione con un singolo parametro. ChunkSize Per ulteriori informazioni, consulta Suddivisione delle attività per i modelli di lavoro.

Il caricamento di 7 B-parameter LLM richiede 30 o più secondi, quindi pagare quel costo per attività dominerebbe il tempo di esecuzione del batch. Gli ambienti con fasi Open Job Description risolvono questo problema: il server vLLM si avvia quando un lavoratore preleva il lavoro e rimane caricato su tutte le attività eseguite dal lavoratore, quindi si chiude con la sessione. Un lotto di 24 richieste su una flotta di 4 lavoratori paga 4 carichi di modelli anziché 24.

Tempo stimato: 30-60 minuti, inclusa la configurazione dell'azienda agricola.

L'esecuzione di questo tutorial comporta l'addebito delle istanze di lavoro della GPU che elaborano il job.

Panoramica di

Per completare questo tutorial, segui questi passaggi:

  1. Allestisci la tua fattoria.

  2. Prepara il file di input.

  3. Invia il processo di inferenza in batch.

  4. Scarica e visualizza i risultati.

  5. Eliminare le risorse.

Allestisci la tua fattoria

Il modo più veloce per ottenere una farm compatibile è distribuire il CloudFormation modello di farm CUDA su. GitHub Una volta raggiunto lo stackCREATE_COMPLETE, configura la CLI di Deadline Cloud per utilizzare la nuova farm:

deadline config set defaults.farm_id FarmId-from-stack-outputs deadline config set defaults.queue_id CUDAQueueId-from-stack-outputs

Se hai già una farm, hai bisogno di una flotta gestita dai servizi con GPU NVIDIA e almeno 32 GB di RAM e una coda con un ambiente di coda conda collegato che legge i parametri e i processi. CondaPackages CondaChannels

Prepara il file di input

L'input è un file JSONL con un oggetto JSON per riga. Ogni riga deve avere un campo: prompt

{"prompt": "What is photosynthesis?", "id": "001"} {"prompt": "Write a haiku about clouds.", "id": "002"} {"prompt": "Explain gravity to a 5 year old.", "id": "003", "max_tokens": 256, "temperature": 0.9}

I campi opzionali id per prompt includono il tracciamento, max_tokens il limite della lunghezza della risposta e temperature il controllo della casualità del campionamento. Per-prompti campi sostituiscono i valori predefiniti a livello di lavoro solo per quella riga e tutti i campi aggiuntivi vengono trasferiti all'output senza modifiche.

Il pacchetto include uno strumento HTML a dipendenza zero per la creazione di file di input. Apri tools/prompt_builder.html nel browser per aggiungere prompt, impostare le opzioni per prompt ed esportare come JSONL.

Invia il processo di inferenza in batch

Da inviare con il mittente della GUI
  1. Dalla directory del vllm_batch pacchetto, apri il mittente:

    deadline bundle gui-submit .
  2. Scegli il file JSONL di input.

  3. Imposta il Prompt Range (ad esempio, 1-10 per i primi 10 prompt del file).

  4. Imposta la dimensione del blocco, ovvero il numero di prompt elaborati da ogni attività (impostazione predefinita). 5

  5. Scegli una directory di output, quindi scegli Invia.

In alternativa, invia con la CLI:

deadline bundle submit . \ --parameter InputFile=prompts.jsonl \ --parameter Prompts=1-10 \ --parameter ChunkSize=5 \ --parameter OutputDir=$PWD/results

Il ModelName parametro di default è Qwen/Qwen2.5-7B-Instruct e accetta qualsiasi ID del modello Hugging Face. Il Prompts parametro accetta la sintassi completa dell'intervallo di numeri interi di Open Job Description, ad esempio per righe specifiche o 2,5,8-9 4,7 per rieseguire solo le righe non riuscite. Invece di correggere la dimensione del blocco, puoi anche lasciare che Deadline Cloud lo ottimizzi automaticamente: impostalo in base TargetRuntimeSeconds al tempo che desideri che ogni blocco impieghi (impostazione predefinita 120 secondi) e lo scheduler aumenta o riduce la dimensione del blocco nelle attività future per raggiungere l'obiettivo. Per l'elenco completo dei parametri, consulta la tabella dei parametri nell'esempio README on. GitHub

Scaricate e visualizzate i risultati

Per scaricare e visualizzare i risultati
  1. Una volta completato il lavoro, scarica l'output:

    deadline job download-output --job-id job-id
  2. Tutti gli output finiscono in una output/ sottocartella all'interno della directory selezionata. Apri results/output/results.html nel tuo browser per visualizzare i risultati visivi o leggi results/output/output.jsonl per visualizzare l'output combinato non elaborato.

Ogni riga di output riporta il prompt originale e i relativi campi pass-through più la generated_text risposta, il motivo della fine e il conteggio dei token:

{"prompt": "What is photosynthesis?", "id": "001", "generated_text": "Photosynthesis is...", "finish_reason": "stop", "prompt_tokens": 7, "completion_tokens": 42}

Concatena l'output nella generazione di immagini in batch

Il output.jsonl file è un input pronto per il pacchetto batch da testo a immagine. Genera testo con questo pacchetto (slogan, didascalie, descrizioni delle scene), quindi invia il file di output al pacchetto di generazione dell'immagine, che utilizza automaticamente ogni riga come didascalia composta sull'immagine generata. generated_text Genera immagini in batch con un modello di diffusionePer la procedura dettagliata completa, consulta.

Eliminazione

Per evitare addebiti continui, pulisci le risorse che hai creato per questo tutorial:

Per ripulire le risorse del tutorial
  1. Se hai distribuito il CloudFormation modello di farm CUDA, elimina lo CloudFormation stack dalla CloudFormation console.

  2. Se hai utilizzato una farm esistente e hai creato una flotta di GPU appositamente per questo tutorial, interrompi o elimina quella flotta. Se hai utilizzato una flotta condivisa preesistente, lasciala al suo posto.

  3. Rimuovi i file di output locali se non ti servono più.

Le seguenti risorse forniscono informazioni aggiuntive: