Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jalankan inferensi LLM batch dengan vLLM
Tutorial ini memandu Anda menjalankan inferensi model bahasa besar (LLM) throughput tinggi pada file prompt JSONL menggunakan mesin inferensi vLLM aktif. GitHub
Bundel menangani beban kerja offline dan paralel yang memalukan: pembuatan konten, kumpulan data evaluasi, terjemahan, ekstraksi, dan klasifikasi. Ini cocok di mana pun Anda membutuhkan model untuk menjawab banyak prompt independen tanpa server API langsung. Di bawah tenda, ia menggunakan fitur pemotongan tugas Deadline Cloud untuk mengelompokkan prompt ke dalam tugas batch, yang memungkinkan Anda memutar paralelisme terhadap biaya penjadwalan dengan satu parameter. ChunkSize Untuk informasi selengkapnya, lihat Pemotongan tugas untuk templat pekerjaan.
Memuat 7 B-parameter LLM membutuhkan waktu 30 detik atau lebih, jadi membayar biaya per tugas akan mendominasi runtime batch. Lingkungan langkah Deskripsi Pekerjaan Terbuka memecahkan masalah ini: server vLLM dimulai ketika pekerja mengambil pekerjaan dan tetap dimuat di setiap tugas yang dijalankan pekerja, kemudian dimatikan dengan sesi. Batch 24 prompt pada armada 4 pekerja membayar untuk 4 beban model, bukan 24.
Perkiraan waktu: 30-60 menit, termasuk pengaturan pertanian.
Menjalankan tutorial ini dikenakan biaya untuk instance pekerja GPU yang memproses pekerjaan.
Gambaran umum
Untuk menyelesaikan tutorial ini, ikuti langkah-langkah berikut:
-
Siapkan peternakan Anda.
-
Siapkan file input.
-
Kirim pekerjaan inferensi batch.
-
Unduh dan lihat hasilnya.
-
Pembersihan sumber daya
Siapkan peternakan Anda
Cara tercepat untuk mendapatkan peternakan yang kompatibel adalah dengan menerapkan CloudFormation template pertanian CUDA GitHubCREATE_COMPLETE, konfigurasikan Deadline Cloud CLI untuk menggunakan farm baru:
deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
Jika Anda sudah memiliki peternakan, Anda memerlukan armada yang dikelola layanan dengan GPU NVIDIA dan setidaknya 32 GB RAM, dan antrian dengan lingkungan antrian conda yang terpasang yang membaca CondaPackages dan parameter pekerjaan. CondaChannels
Siapkan file input
Input adalah file JSONL dengan satu objek JSON per baris. Setiap baris harus memiliki prompt bidang:
{"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}
Bidang per prompt opsional termasuk id untuk pelacakan, max_tokens untuk membatasi panjang respons, dan temperature untuk mengontrol keacakan pengambilan sampel. Per-promptbidang mengganti default tingkat pekerjaan hanya untuk baris itu, dan bidang tambahan apa pun melewati output tidak berubah.
Bundel ini mencakup alat HTML tanpa ketergantungan untuk membangun file input. Buka tools/prompt_builder.html di browser Anda untuk menambahkan prompt, mengatur opsi per-prompt, dan ekspor sebagai JSONL.
Kirim pekerjaan inferensi batch
Untuk mengirimkan dengan pengirim GUI
-
Dari direktori
vllm_batchbundel, buka pengirim:deadline bundle gui-submit . -
Pilih file input JSONL Anda.
-
Atur Rentang Prompt (
1-10misalnya, untuk 10 prompt pertama dalam file). -
Atur Chunk Size, yaitu berapa banyak prompt setiap proses tugas (default
5). -
Pilih direktori keluaran, lalu pilih K irim.
Atau, kirimkan dengan CLI:
deadline bundle submit . \ --parameter InputFile=prompts.jsonl\ --parameter Prompts=1-10 \ --parameter ChunkSize=5 \ --parameter OutputDir=$PWD/results
ModelNameParameter default ke Qwen/Qwen2.5-7B-Instruct dan menerima ID model Hugging Face apa pun. PromptsParameter menerima sintaks rentang bilangan bulat Deskripsi Pekerjaan Terbuka lengkap, seperti 2,5,8-9 untuk baris tertentu atau 4,7 untuk menjalankan kembali hanya baris yang gagal. Alih-alih memperbaiki ukuran potongan, Anda juga dapat membiarkan Deadline Cloud menyetelnya secara otomatis: mengatur TargetRuntimeSeconds berapa lama waktu yang Anda inginkan untuk setiap potongan (default 120 detik), dan penjadwal menambah atau mengecilkan ukuran potongan pada tugas mendatang untuk mencapai target. Untuk daftar parameter lengkap, lihat tabel parameter dalam contoh README pada GitHub
Unduh dan lihat hasilnya
Untuk mengunduh dan melihat hasilnya
-
Setelah pekerjaan selesai, unduh output:
deadline job download-output --job-idjob-id -
Semua output mendarat di
output/subfolder di dalam direktori yang Anda pilih. Bukaresults/output/results.htmldi browser Anda untuk penampil hasil visual, atau bacaresults/output/output.jsonluntuk output gabungan mentah.
Setiap baris keluaran membawa prompt asli dan bidang pass-through-nya ditambah generated_text respons, alasan penyelesaian, dan jumlah token:
{"prompt": "What is photosynthesis?", "id": "001", "generated_text": "Photosynthesis is...", "finish_reason": "stop", "prompt_tokens": 7, "completion_tokens": 42}
Rantau output ke dalam pembuatan gambar batch
output.jsonlFile ini adalah input siap pakai untuk bundel batch text-to-image. Hasilkan teks dengan bundel ini (slogan, keterangan, deskripsi adegan), lalu kirimkan file output ke bundel pembuatan gambar, yang secara otomatis menggunakan setiap baris generated_text sebagai keterangan yang disusun di atas gambar yang dihasilkan. Untuk panduan lengkapnya, lihatHasilkan gambar dalam batch dengan model difusi.
Bersihkan
Untuk menghindari biaya berkelanjutan, bersihkan sumber daya yang Anda buat untuk tutorial ini:
Untuk membersihkan sumber daya tutorial
-
Jika Anda menerapkan CloudFormation template pertanian CUDA, hapus tum CloudFormation pukan dari CloudFormation konsol.
-
Jika Anda menggunakan farm yang ada dan membuat armada GPU khusus untuk tutorial ini, hentikan atau hapus armada itu. Jika Anda menggunakan armada bersama yang sudah ada sebelumnya, biarkan tetap di tempatnya.
-
Hapus file output lokal jika Anda tidak lagi membutuhkannya.
Sumber daya terkait
Sumber daya berikut memberikan informasi tambahan: