기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
vLLM을 사용하여 배치 LLM 추론 실행
이 자습서에서는 GitHub의 vLLM 추론 엔진을 사용하여 프롬프트의 JSONL 파일에서 처리량이 많은 대규모 언어 모델(LLM) 추론을
번들은 콘텐츠 생성, 평가 데이터 세트, 번역, 추출 및 분류와 같은 오프라인, 당혹스러운 병렬 워크로드를 처리합니다. 라이브 API 서버 없이 많은 독립 프롬프트에 응답하는 모델이 필요한 모든 곳에 적합합니다. 후드 아래에서는 Deadline Cloud 작업 청킹 기능을 사용하여 프롬프트를 일괄 작업으로 그룹화하므로 단일 ChunkSize 파라미터를 사용하여 예약 오버헤드에 대한 병렬 처리를 수행할 수 있습니다. 자세한 내용은 작업 템플릿에 대한 작업 청킹 단원을 참조하십시오.
7B-parameter LLM을 로드하는 데 30초 이상이 걸리므로 작업당 비용을 지불하면 배치 런타임이 우선합니다. Open Job Description 단계 환경은이 문제를 해결합니다. vLLM 서버는 작업자가 작업을 픽업할 때 시작되고 작업자가 실행하는 모든 작업에서 로드된 상태로 유지된 다음 세션과 함께 종료됩니다. 4-워커 플릿의 24 프롬프트 배치는 24개가 아닌 4개의 모델 로드에 대해 비용을 지불합니다.
예상 시간: 팜 설정을 포함하여 30~60분.
이 자습서를 실행하면 작업을 처리하는 GPU 작업자 인스턴스에 대한 요금이 발생합니다.
개요
이 자습서를 완료하려면 다음 단계를 따르세요.
-
팜을 설정합니다.
-
입력 파일을 준비합니다.
-
배치 추론 작업을 제출합니다.
-
결과를 다운로드하여 봅니다.
-
리소스를 정리합니다.
팜 설정
호환되는 팜을 가져오는 가장 빠른 방법은 GitHub에 CUDA 팜 CloudFormation 템플릿을CREATE_COMPLETE구성합니다.
deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
이미 팜이 있는 경우 NVIDIA GPUs 및 최소 32GB RAM이 있는 서비스 관리형 플릿과 CondaPackages 및 CondaChannels 작업 파라미터를 읽는 conda 대기열 환경이 연결된 대기열이 필요합니다.
입력 파일 준비
입력은 줄당 하나의 JSON 객체가 있는 JSONL 파일입니다. 각 줄에는 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 제출자와 함께 제출하려면
-
vllm_batch번들 디렉터리에서 제출자를 엽니다.deadline bundle gui-submit . -
입력 JSONL 파일을 선택합니다.
-
프롬프트 범위를 설정합니다(예: 파일의
1-10처음 10개 프롬프트의 경우). -
청크 크기를 설정합니다. 청크 크기는 각 작업 프로세스에 대한 프롬프트 수입니다(기본값
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 파라미터는 2,5,8-9 특정 줄의 경우 또는 실패한 줄만 다시 실행하는 경우와 같이 전체 Open Job Description 정수 범위 구문4,7을 허용합니다. 청크 크기를 수정하는 대신 Deadline Cloud가 자동으로 조정하도록 TargetRuntimeSeconds할 수도 있습니다. 각 청크의 소요 시간(기본값 120초)을 로 설정하면 스케줄러가 향후 작업에서 청크 크기를 늘리거나 줄여 대상에 도달합니다. 전체 파라미터 목록은 GitHub의 샘플 README에서 파라미터 표를 참조하세요
결과 다운로드 및 보기
결과를 다운로드하고 보려면
-
작업이 완료되면 출력을 다운로드합니다.
deadline job download-output --job-idjob-id -
모든 출력은 선택한 디렉터리 내의
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으로 각 줄의를 자동으로 사용합니다. 전체 연습은 단원을 참조하십시오확산 모델을 사용하여 일괄적으로 이미지 생성.
정리
지속적인 요금을 방지하려면이 자습서를 위해 생성한 리소스를 정리하십시오.
자습서 리소스를 정리하려면
-
CUDA 팜 CloudFormation 템플릿을 배포한 경우 CloudFormation 콘솔에서 CloudFormation 스택을 삭제합니다.
-
기존 팜을 사용하고이 자습서를 위한 GPU 플릿을 생성한 경우 해당 플릿을 중지하거나 삭제합니다. 기존 공유 플릿을 사용한 경우 그대로 둡니다.
-
로컬 출력 파일이 더 이상 필요하지 않은 경우 제거합니다.
관련 리소스
다음 리소스는 추가 정보를 제공합니다.