View a markdown version of this page

使用 vLLM 執行批次 LLM 推論 - 截止日期雲端

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 vLLM 執行批次 LLM 推論

本教學課程將引導您使用 GitHub 上的 vLLM 推論引擎,在提示的 JSONL 檔案上執行高輸送量大型語言模型 (LLM) 推論。您可以使用檔案在 GitHub 上提交 vLLM 批次推論任務套件,其中每一行都是一個提示、挑選模型,以及 GPU 機群中的任務粉絲。每個提示都會取得 LLM 回應,而彙總步驟會將所有內容封裝到 JSONL 檔案,加上您可以在任何瀏覽器中開啟的獨立 HTML 檢視器。

套件可處理離線、尷尬且平行的工作負載:內容產生、評估資料集、翻譯、擷取和分類。它適合您需要模型來回應許多獨立提示,而不需要即時 API 伺服器的任何位置。在幕後,它會使用截止日期雲端任務區塊功能,將提示分組為批次任務,這可讓您使用單一ChunkSize參數來平行處理排程額外負荷。如需詳細資訊,請參閱任務範本的任務區塊

載入 7B-parameter LLM 需要 30 秒或更多,因此支付每個任務的成本將主導批次執行時間。開啟任務描述步驟環境解決此問題:vLLM 伺服器會在工作者取得任務時啟動,並在工作者執行的每個任務中保持載入狀態,然後使用工作階段關閉。4 個工作者機群上的 24 個提示批次會支付 4 個模型負載,而不是 24 個模型負載。

預估時間:30-60 分鐘,包括陣列設定。

執行本教學課程會產生處理任務的 GPU 工作者執行個體費用。

概觀

若要完成本教學課程,請遵循下列步驟:

  1. 設定您的陣列。

  2. 準備輸入檔案。

  3. 提交批次推論任務。

  4. 下載並檢視結果。

  5. 清除資源。

設定您的陣列

取得相容陣列的最快方法是在 GitHub 上部署 CUDA 陣列 CloudFormation 範本。堆疊到達 後CREATE_COMPLETE,設定截止日期雲端 CLI 以使用新的陣列:

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

如果您已有陣列,則需要具有 NVIDIA GPUs 和至少 32 GB RAM 的服務受管機群,以及連接讀取CondaPackagesCondaChannels任務參數之 Conda 佇列環境的佇列。

準備輸入檔案

輸入是 JSONL 檔案,每行一個 JSON 物件。每一行都必須有 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}

每個提示的選用欄位包括id用於追蹤、max_tokens限制回應長度,以及temperature控制抽樣隨機性。每個提示欄位只會覆寫該行的任務層級預設值,而任何其他欄位都會以不變的方式傳遞至輸出。

套件包含用於建置輸入檔案的零相依性 HTML 工具。在瀏覽器tools/prompt_builder.html中開啟 以新增提示、設定每個提示選項,以及匯出為 JSONL。

提交批次推論任務

使用 GUI 提交者提交
  1. vllm_batch套件目錄中,開啟提交者:

    deadline bundle gui-submit .
  2. 選擇您的輸入 JSONL 檔案。

  3. 設定提示範圍 (例如,1-10針對 檔案的前 10 個提示)。

  4. 設定區塊大小,這是每個任務處理的提示數目 (預設 5)。

  5. 選擇輸出目錄,然後選擇提交

或者,使用 CLI 提交:

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

ModelName 參數預設為 Qwen/Qwen2.5-7B-Instruct並接受任何 Hugging Face 模型 ID。Prompts 參數接受完整的 Open Job Description 整數範圍語法,例如2,5,8-9用於特定行或僅4,7重新執行失敗行。您也可以讓 Deadline Cloud 自動調整區塊大小,而不是修正區塊大小:TargetRuntimeSeconds將 設定為您希望每個區塊採取的時間長度 (預設 120 秒),而排程器會在未來的任務上擴展或縮減區塊大小以達成目標。如需完整參數清單,請參閱 GitHub 上 README 範例的參數表

下載並檢視結果

下載並檢視結果
  1. 任務完成後,下載輸出:

    deadline job download-output --job-id job-id
  2. 所有輸出都會落在所選目錄中的 output/ 子資料夾中。在瀏覽器results/output/results.html中為視覺效果結果檢視器開啟 ,或results/output/output.jsonl為原始合併輸出讀取 。

每個輸出行都帶有原始提示及其傳遞欄位,加上generated_text回應、完成原因和字符計數:

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

將輸出鏈結至批次映像產生

output.jsonl 檔案是text-to-image批次套件的現成輸入。使用此套件產生文字 (標語、字幕、場景描述),然後將輸出檔案提交至影像產生套件,該套件會自動使用每一行的 generated_text 作為複合於產生影像上的字幕。如需完整的逐步解說,請參閱 使用擴散模型批次產生映像

清除

為了避免持續收費,請清除您為此教學課程建立的資源:

清除教學課程資源
  1. 如果您已部署 CUDA 陣列 CloudFormation 範本,請從 CloudFormation 主控台刪除 CloudFormation 堆疊。

  2. 如果您使用現有的陣列並特別為此教學課程建立 GPU 機群,請停止或刪除該機群。如果您使用預先存在的共用機群,請將其保留在原處。

  3. 如果您不再需要本機輸出檔案,請將其移除。

下列資源提供其他資訊: